如何在构建映像时将server.xml复制到dockerized tomcat中



我想用自定义的server.xml 运行tomcat

我将访问日志前缀修改为access_log,而不是localhost_access_log

所以我写了这样的Dockerfile

FROM tomcat:8.5.47-jdk8-openjdk
COPY target/poi-middle-0.1-SNAPSHOT.war /usr/local/tomcat/webapps/
COPY server.xml /user/local/tomcat/conf/

但是tomcat server.xml文件不会被复制。

docker容器中的tomcat仍然有其原始服务器.xml

我用这个命令结账了。

docker exec -it poi-middle cat /usr/local/tomcat/conf/server.xml

我犯了什么错?

[更新]

我成功地建立了一个形象。这是一些日志。

$ docker image build -t testtomcat .
Step 1/3 : FROM tomcat:8.5.47-jdk8-openjdk
8.5.47-jdk8-openjdk: Pulling from library/tomcat
... 
...
Status: Downloaded newer image for tomcat:8.5.47-jdk8-openjdk
---> 882487b8be1d
Step 2/3 : COPY target/poi-middle-0.1-SNAPSHOT.war 
/usr/local/tomcat/webapps/
---> 705b2a1cc60d
Step 3/3 : COPY server.xml /user/local/tomcat/conf/
---> ae70499b65bf
Successfully built ae70499b65bf
Successfully tagged testtomcat:latest

然后,我使用上面的图片运行docker组件。

$ docker run -d --name poi-middle  -p 8000:8000 testtomcat
$ docker exec -it poi-middle cat /usr/local/tomcat/conf/server.xml
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />

这里的问题是RUN阶段中的映像覆盖了server.xml。

使用docker运行解决方案:

docker run -d --name poi-middle -v /path/to/server.xml:/usr/local/tomcat/conf/server.xml -p 8000:8000 testtomcat