我想构建我的第一个Docker映像,其中包含Apache Tomcat和已部署的Web应用程序。我的Dockerfile很小,基于Tomcat:8.0映像,应该将WAR文件复制到Tomcat的appBase中。
构建映像报告成功,但是在容器中找不到该文件。
使用“ docker cp”将主机从主机复制到容器时没有问题:
[root@edubox dock]# docker cp jdbcdemo_3.war 15dd44bbf992:/usr/local/tomcat/webapps/
我的Dockerfile:
# we are extending everything from tomcat:8.0 image ...
FROM tomcat:8.0
MAINTAINER simo
# COPY path-to-your-application-war path-to-webapps-in-docker-tomcat
COPY ./jdbcdemo_3.war /usr/local/tomcat/webapps/
EXPOSE 8082
图像构建:
root@edubox dock]# docker image build -t simo/jdbcdemo_3 --tag=recent ./
Sending build context to Docker daemon 10.24 kB
Step 1/4 : FROM tomcat:8.0
---> ef6a7c98d192
Step 2/4 : MAINTAINER simo
---> Using cache
---> 54d824d7258b
Step 3/4 : COPY ./jdbcdemo_3.war /usr/local/tomcat/webapps/
---> Using cache
---> f94330423a93
Step 4/4 : EXPOSE 8082
---> Running in 74b6dd0364b2
---> 9464f11ac18e
Removing intermediate container 74b6dd0364b2
Successfully built 9464f11ac18e
我希望COPY将文件放在指定的位置,否则将出现错误消息,因此这是行不通的。
答案 0 :(得分:0)
请尝试这种方式
保留Dockerfile所在的“ jdbcdemo_3.war”。并在Dockerfile中进行更改。
(从Dockerfile中删除./),
COPY jdbcdemo_3.war / usr / local / tomcat / webapps /
答案 1 :(得分:0)
请检查文件的权限。
您可以授予完全许可并进行一次测试。 (用户:组)
答案 2 :(得分:0)
尝试一下:COPY jdbcdemo_3.war / tmp
在您的Dockerfile中。并生成映像并检入/ tmp目录。如果文件复制成功,则授予/ usr / local / tomcat / webapps /权限,或者先复制到/ tmp,然后从/ tmp复制到/ usr / local / tomcat / webapps /。在Dockerfile中使用COPY命令
答案 3 :(得分:0)
您好,非常感谢您提供建议。最终,这个问题微不足道。我没有检查正确的容器。
我没有意识到需要选择新创建的映像,使用该映像运行容器,然后才查看该容器中Dockerfile中描述的更改。
我一直在研究我现在知道不能工作的父容器。
抱歉浪费您的时间;-)