You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署Django时无法读取新邮箱配置问题求助

解决Docker Compose运行Django时读取旧邮箱配置的问题
  • 检查镜像构建是否包含最新配置
    如果你修改了本地的settings.py但Docker容器里还是旧配置,大概率是镜像缓存搞的鬼。重新构建镜像时跳过缓存:

    docker compose build --no-cache
    docker compose up -d
    

    同时确认你的Dockerfile里有正确复制项目文件的命令,比如COPY . /app(假设项目根目录在/app下),别漏了复制settings文件。

  • 排查卷挂载与.dockerignore问题
    如果docker-compose.yml里用了本地目录挂载(比如./:/app),先检查本地的settings.py确实是修改后的版本。另外看一下项目根目录的.dockerignore文件,有没有把settings.py或者配置文件夹写进去——要是被忽略了,构建镜像时就不会把新配置打包进去,挂载又出问题的话就会用旧配置。

  • 核对环境变量配置
    很多Django项目会用环境变量覆盖代码里的配置,比如EMAIL_HOST、EMAIL_PORT、EMAIL_HOST_USER这些。检查:

    1. docker-compose.yml里的environment块,有没有硬编码旧的邮箱配置;
    2. 项目根目录的.env文件,里面的邮箱相关变量是不是没更新;
    3. settings.py里的配置逻辑,比如是不是写了EMAIL_HOST = os.getenv('EMAIL_HOST', '旧地址')——这种情况如果Docker里没设置对应环境变量,就会用默认的旧值,要么改默认值,要么在Docker里设置正确的环境变量。
  • 确认Docker使用的Settings模块
    有些项目会分开发、生产环境的settings文件,比如settings/dev.py和settings/production.py。检查docker-compose.yml里有没有设置DJANGO_SETTINGS_MODULE环境变量,比如:

    environment:
      - DJANGO_SETTINGS_MODULE=myproject.settings.production
    

    如果是这样,你改的是dev.py里的配置就没用,得去对应的production.py里更新邮箱设置。

  • 进入容器验证配置
    实在找不到问题,就直接进容器看真实的配置文件:

    docker exec -it <你的容器名称> bash
    cat /app/myproject/settings.py  # 换成你自己的settings路径
    

    如果文件内容是旧的,说明镜像构建或挂载有问题;如果是新的,那可能是Django缓存或者其他地方的配置冲突,可以试试在容器里运行python manage.py shell,手动打印邮箱配置:

    from django.conf import settings
    print(settings.EMAIL_HOST)
    

    看输出是不是新配置,再针对性排查。

内容的提问来源于stack exchange,提问作者David Amugune

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 15:10:07