如何在另一个Dockerfile中复制已构建Docker镜像内的文件?
问题解答:从Docker镜像复制文件到另一个镜像
可以实现从已构建的镜像中复制文件到另一个Docker镜像里,具体操作如下:
1. 先构建存储代码的基础镜像
假设你把提供的Dockerfile命名为Dockerfile.base,执行以下命令构建并给镜像打标签:
docker build -t my-base-code -f Dockerfile.base .
(my-base-code是自定义镜像标签,方便后续引用,可根据需求修改)
2. 在新Dockerfile中复制目标镜像的文件
推荐使用Docker的多阶段构建,灵活且高效;也可以直接从现有镜像复制,两种方法如下:
方法一:多阶段构建(推荐)
在新的Dockerfile中,先引入存储代码的基础镜像作为临时源,再将文件复制到最终业务镜像:
# 第一阶段:引入存储代码的基础镜像作为源 FROM my-base-code as code-source # 第二阶段:构建你的业务镜像(可替换为任意你需要的基础镜像,比如python:3.11-alpine) FROM ubuntu:latest # 设置工作目录 WORKDIR /app # 从code-source阶段复制文件到当前镜像 COPY --from=code-source /app/ /app/ # 后续可添加业务相关命令,比如安装依赖、启动服务等
方法二:直接从现有镜像复制(适合简单场景)
无需多阶段,直接在新Dockerfile中通过镜像标签指定源:
FROM ubuntu:latest WORKDIR /app # 直接从已构建的my-base-code镜像复制文件 COPY --from=my-base-code /app/ /app/
注意事项
- 确保
my-base-code镜像已在本地构建完成,或可通过镜像仓库拉取到 - 若只需复制部分文件,将
/app/替换为具体路径即可,比如/app/src/
内容的提问来源于stack exchange,提问作者Malith Dilshan
相关产品推荐
相关产品推荐

