[英]I cannot do RUN cp in Dockerfile
我为 tomcat 容器编写了如下所示的 Dockerfile。
FROM tomcat:9.0
#exec command
RUN apt-get update \
&& apt-get install -y wget \
&& apt-get install -y vim \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
#copy folder : not working
RUN cp -pR /usr/local/tomcat/webapps.dist/* /usr/local/tomcat/webapps
#run tomcat
CMD ["catalina.sh","run"]
但是“RUN cp **”不起作用。
其实我是在tomcat容器里做这个命令的,所以这个cp命令是正确运行的。 像那样。
$ docker exec -it cn-tomcat /bin/bash
root@host_tomcat:/usr/local/tomcat#cp -pR /usr/local/tomcat/webapps.dist/* /usr/local/tomcat/webapps
这是 tomcat 容器中的文件夹。
root@host_tomcat:/usr/local/tomcat# ls -la
total 128
drwxr-xr-x 1 root root 41 Nov 12 01:49 .
drwxr-xr-x 1 root root 20 Oct 22 00:16 ..
-rw-r--r-- 1 root root 18970 Sep 28 13:51 BUILDING.txt
-rw-r--r-- 1 root root 6210 Sep 28 13:51 CONTRIBUTING.md
-rw-r--r-- 1 root root 57092 Sep 28 13:51 LICENSE
-rw-r--r-- 1 root root 2333 Sep 28 13:51 NOTICE
-rw-r--r-- 1 root root 3372 Sep 28 13:51 README.md
-rw-r--r-- 1 root root 6898 Sep 28 13:51 RELEASE-NOTES
-rw-r--r-- 1 root root 16507 Sep 28 13:51 RUNNING.txt
drwxr-xr-x 2 root root 4096 Oct 22 00:33 bin
drwxr-xr-x 3 1000 1000 254 Nov 12 01:49 conf
drwxr-xr-x 2 root root 4096 Oct 22 00:33 lib
drwxrwxr-x 2 1000 1000 6 Nov 12 01:46 log
drwxrwxrwx 1 root root 177 Nov 12 01:49 logs
drwxr-xr-x 2 root root 159 Oct 22 00:33 native-jni-lib
drwxrwxrwx 2 root root 30 Oct 22 00:33 temp
drwxrwxr-x 3 1000 1000 20 Nov 12 01:59 webapps
drwxr-xr-x 7 root root 81 Sep 28 13:51 webapps.dist
drwxrwxrwx 1 root root 22 Nov 12 01:49 work
root@host_tomcat:/usr/local/tomcat#
问题是什么?
-- 添加结果。 ——
“docker compose build”没问题。
[ec2-user@ip-***-***-***-*** pj_tomcat]$ docker compose build
[+] Building 1.6s (7/7) FINISHED
=> [internal] load build definition from Dockerfile 0.1s
=> => transferring dockerfile: 753B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/tomcat:9.0 1.5s
=> [1/3] FROM docker.io/library/tomcat:9.0@sha256:**************************************************************** 0.0s
=> => resolve docker.io/library/tomcat:9.0@sha256:**************************************************************** 0.0s
=> CACHED [2/3] RUN apt-get update && apt-get install -y wget && apt-get install -y vim && a 0.0s
=> CACHED [3/3] RUN cp -pR /usr/local/tomcat/webapps.dist/* /usr/local/tomcat/webapps 0.0s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:**************************************************************** 0.0s
=> => naming to docker.io/library/pj_tomcat
webapps.dist 中不为空。
root@host_tomcat:/usr/local/tomcat# pwd
/usr/local/tomcat
root@host_tomcat:/usr/local/tomcat/webapps.dist# ls -la
total 4
drwxr-xr-x 7 root root 81 Sep 28 13:51 .
drwxr-xr-x 1 root root 29 Nov 12 03:59 ..
drwxr-xr-x 3 root root 223 Oct 22 00:33 ROOT
drwxr-xr-x 15 root root 4096 Oct 22 00:33 docs
drwxr-xr-x 7 root root 99 Oct 22 00:33 examples
drwxr-xr-x 6 root root 79 Oct 22 00:33 host-manager
drwxr-xr-x 6 root root 114 Oct 22 00:33 manager
在 webapps 中它是空的。 所以它没有被复制。
root@host_tomcat:/usr/local/tomcat/webapps# pwd
/usr/local/tomcat/webapps
root@host_tomcat:/usr/local/tomcat/webapps# ls -la
total 0
drwxrwxr-x 2 1000 1000 6 Nov 12 03:58 .
drwxr-xr-x 1 root root 29 Nov 12 03:59 ..
dockerfile 中没有cp -pr
:
选项1:
RUN cp /usr/local/tomcat/webapps.dist /usr/local/tomcat/webapps
在 dockerfile 中: cp
命令的行为类似于 Unix 的 `cp -a 命令,其中目录被递归复制,并尽可能保留权限。
选项 2:
ADD hom* /mydir/
选项 3:
COPY <SRC> <DEST>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.