docker compose up -d --build 会使用新代码构建新镜像。但为了确保完全使用新代码,建议执行以下完整流程:
推荐的完整重新部署流程
bash
# 1. 停止并删除现有容器
docker compose down
# 2. 删除旧镜像(可选但推荐,确保完全重建)
docker compose build --no-cache
# 3. 启动新容器
docker compose up -d
或者一步到位(你当前的命令增强版)
bash
# 停止容器 + 强制重新构建 + 后台启动
docker compose down && docker compose up -d --build --force-recreate
参数说明
--build: 构建镜像后再启动容器--force-recreate: 强制重新创建容器(即使配置未改变)--no-cache: 构建时不使用缓存层,完全重新构建-d: 后台运行
验证是否使用了新代码
bash
# 查看镜像构建时间
docker images | grep miaohui
# 查看容器日志确认启动情况
docker compose logs -f
# 进入容器检查代码版本
docker compose exec <service_name> ls -la /app
如果还是没更新,可能的原因
-
代码没有正确复制到容器
- 检查
Dockerfile中的COPY命令 - 确认
.dockerignore没有排除关键文件
- 检查
-
使用了 volume 挂载覆盖了代码
- 检查
docker-compose.yml中的volumes配置 - 如果挂载了本地目录,容器内会使用挂载的代码而非镜像内的代码
- 检查
-
Python 缓存问题
bash# 清理 Python 缓存后重建 find . -type d -name __pycache__ -exec rm -r {} + find . -type f -name "*.pyc" -delete docker compose down && docker compose up -d --build