DockerFile COPY绝对路径报错
2017-04-14 by dongnan
错误描述
使用 DockerFile 创建 镜像时提示以下错误
Step 9/9 : COPY /usr/share/tomcat/\.jenkins/workspace/irm-web/target/irm-web-0.0.1-SNAPSHOT.war /usr/local/tomcat/webapps/irm-web.war
lstat usr/share/tomcat/.jenkins/workspace/irm-web/target/irm-web-0.0.1-SNAPSHOT.war: no such file or directory
环境: docker 1.13.1 on CentOS 7.3 amd64
错误原因
在 DockerFile 中, ADD 与 COPY 指令,中的 src 是指 Dockerfile 所在目录的一个相对路径而不是绝对路径。
解决方法
使用相对路径,下列是修改后的 DockerFile
cat Dockerfile
FROM hub.ywwd.net/library/tomcat:9
MAINTAINER dongnan
ADD conf/sources.list /etc/apt/sources.list
ENV TZ=Asia/Shanghai LANG=en_US.UTF-8
ADD src/irm-web.war /usr/local/tomcat/webapps/irm-web.war
注意 src 目录与 Dockerfile 在同一级目录。
验证
重新创建镜像。
docker build -t irm-web
Sending build context to Docker daemon  27.3 MB
Step 1/7 : FROM hub.ywwd.net/library/tomcat:9
 ---> a0f141e26c8a
# ...省略
Step 7/7 : ADD src/irm-web.war /usr/local/tomcat/webapps/irm-web.war
 ---> 5a627a102ae7
Removing intermediate container d145d63ae591
Successfully built 5a627a102ae7
帮助
ADD 指令
格式: ADD <src> <dest> 
该命令将复制指定的 <src> 到容器中的 <dest> 。
其中 <src> 可以是 Dockerfile 所在目录的一个相对路径,也可以是一个URL,还可以是一个tar文件(自动解压为目录)。
COPY 指令
格式: COPY <src> <dest>
复制本地主机的 <src> 为 Dockerfile 所在目录的相对路径到容器中的 <dest> (非自动解压)。
参考
https://zongming.net/read-1013