为什么Dockerfile中COPY的文件被放到镜像根目录而非工作目录
问题原因
这是COPY指令的路径规则决定的,和WORKDIR的作用范围有关:
WORKDIR /usr/src/app仅会为后续使用相对路径的指令(包括RUN、CMD、ENTRYPOINT以及目标为相对路径的COPY/ADD)设置默认工作目录,不会修改绝对路径的指向。- 你当前Dockerfile中的
COPY ["somefile", "/"],第二个参数/是明确的绝对路径,直接指向容器根目录,所以Docker会直接把somefile复制到根路径下,完全不受前面WORKDIR配置的影响。
修正方案
如果要把somefile复制到/usr/src/app目录下,修改COPY指令即可,可选写法如下:
# 写法1:使用相对路径,会自动拼接前面配置的WORKDIR COPY ["somefile", "./"] # 写法2:直接指定目标绝对路径 COPY ["somefile", "/usr/src/app/"]
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

