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

修改serve.py后Docker不生效?如何让Docker运行最新代码?

Docker代码变更生效问题解答

现有操作无效的原因

你当前的Docker Compose配置仅挂载了.cachedir目录,serve.py属于foo/bar镜像内置文件,修改宿主机的serve.py不会同步到镜像内部。你执行的容器重启、up --force-recreate命令都只是基于原有旧镜像重新创建容器,镜像本身没有更新,因此容器内的serve.py始终为旧版本。

是否必须重建镜像

如果保持现有配置不变,是必须重建镜像的,操作步骤如下:

  • 先执行docker-compose build命令重新构建镜像,将修改后的serve.py打包到新镜像中
  • 再执行docker-compose up -d启动容器,新容器会加载新镜像中的最新代码

更快的代码测试方案

方案1:挂载本地代码目录(开发场景推荐)

在Docker Compose的volumes配置中增加本地代码目录到容器工作目录的挂载规则,假设宿主机当前目录就是serve.py存放目录,容器内的工作目录为/app,修改后的配置如下:

container_name: foo
    image: foo/bar
    volumes:
        - ".cachedir:/cachedir"
        - "./:/app" # 请根据容器实际的代码存放路径调整右侧目标路径
    env_file: 
        - .env
    ports:
        - "50052:50052"
    restart: always
    entrypoint: ["python", "serve.py"]
    logging:
        options:
            max-size: "10m"
            max-file: "3"

配置更新后重启容器即可,后续修改宿主机代码会直接同步到容器内,不需要重建镜像;如果你的Python服务开启了热重载模式,甚至不需要重启容器就能生效。

方案2:直接复制文件到容器(临时测试用)

如果不想修改配置,可使用docker cp命令直接将宿主机修改后的文件复制到容器内,参考命令如下(请替换为容器内serve.py的实际存放路径):

docker cp ./serve.py foo:/app/serve.py

复制完成后重启容器即可生效,无需重建镜像。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:30:03