我想用自定义的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 "%r" %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