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

如何在运行Docker容器时覆盖镜像内已内置的文件?

问题解答

失效原因

COPY指令属于镜像构建阶段的执行逻辑,Dockerfile中定义的ARG参数也仅在构建过程中生效。你执行docker run时传入的--env是容器运行时的环境变量,不会修改构建阶段已经完成的文件复制结果,所以容器内始终是构建时默认拷贝的sum.js和sum.test.js。

可行实现方案

方案1:构建时传参将目标文件打包进镜像

如果需要把指定文件固化到镜像内,构建镜像时传入ARG参数即可,构建命令如下:

docker build --build-arg JS_FILE="./Scripts/updated_sum.js" --build-arg JS_TEST_FILE="./Test/updated_sum.test.js" -t <镜像名称> .

构建完成后直接启动容器即可,不需要额外传环境变量,镜像内已内置你指定的两个更新后的文件。

方案2:运行时挂载宿主机文件动态加载

如果是开发调试场景,不想每次修改文件都重新构建镜像,可以直接将本地文件挂载到容器对应路径,运行命令如下:

docker run -v $(pwd)/Scripts/updated_sum.js:/app/updated_sum.js -v $(pwd)/Test/updated_sum.test.js:/app/updated_sum.test.js -it <镜像名称>

该方案修改本地文件后重启容器即可生效,无需重新构建镜像。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:51:03