跳转至

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 中, ADDCOPY 指令,中的 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

回到页面顶部