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

AWS上Docker部署的Django项目Git Pull后代码不生效求助

问题分析与解决方法

你的核心问题是:Django项目代码更新后未同步到运行的容器中,静态文件能更新是因为你配置了目录挂载,但Python代码并没有挂载到容器内,且容器基于旧镜像运行,所以新代码无法生效。以下是具体解决办法:


方法1:挂载项目代码到容器(适合快速迭代/测试场景)

修改docker-compose.yml中web服务的volumes配置,将本地项目目录挂载到容器内的代码工作目录(需与Dockerfile中的WORKDIR一致):

web:
  image: image_name
  build: .
  restart: always
  command: gunicorn project.wsgi:application --bind 0.0.0.0:8000
  env_file:
    - envs/.env.prod
  ports:
    - "8000:8000"
  volumes:
    - ./staticfiles/:/tmp/project/staticfiles
    - .:/app  # 新增:本地项目根目录挂载到容器工作目录,替换/app为你Dockerfile中WORKDIR设置的路径
  depends_on:
    - postgres
    - redis

配置完成后,拉取Git代码后只需重启web容器即可生效:

docker-compose restart web

注意:生产环境不推荐此方式,可能引发依赖版本、文件权限等问题。


方法2:重新构建镜像并重启服务(生产环境推荐)

容器内的代码是打包在镜像中的,拉取Git更新后必须重新构建镜像,让新代码被打包进去,再重启服务:

# 重新构建web服务的镜像
docker-compose build web
# 重新启动web服务(-d 参数表示后台运行)
docker-compose up -d web

此方式能保证容器运行的代码与Git最新版本完全一致,符合生产环境的稳定性要求。


额外检查项

  • 确认Git拉取后,本地项目目录确实是最新版本,无未合并的冲突或未拉取的文件
  • 检查Dockerfile中是否包含COPY . .(或类似复制项目代码的指令),确保构建镜像时能把本地代码复制进镜像
  • 重启后可通过日志验证代码是否加载成功:docker-compose logs web

内容的提问来源于stack exchange,提问作者Elena Konstantinova

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:55:16