Docker tomcat通过dockerfile编辑configuration文件

我创build了一个dockerfile和docker-compose,就像下面这样,在我的容器中创build一个tomcat的图像并编辑tomcat用户,这样我就可以访问pipe理器gui。
下面的四个文件都与我运行docker-compose up命令的文件夹在同一个文件夹中。

泊坞窗,compose.yml

version: '2' services: tomcat: build: . container_name: development ports: - 8001:8080 environment: - spring.profiles.active=development 

Dockerfile

 FROM tomcat COPY tomcat-users.xml /usr/local/tomcat/conf/ COPY context.xml /usr/local/tomcat/webapps/manager/META-INF/ CMD ["catalina.sh","run"] 

的tomcat-users.xml中

 <?xml version='1.0' encoding='cp1252'?> <tomcat-users xmlns="http://tomcat.apache.org/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd" version="1.0"> <user username="manager" password="pass" roles="manager-gui,manager-script"/> <user username="admin" password="pass" roles="tomcat"/> </tomcat-users> 

的context.xml

 <?xml version="1.0" encoding="UTF-8"?> <Context antiResourceLocking="false" privileged="true" > <!--<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />--> </Context> 

当我运行docker-compose命令 ,它完美地生成了带有tomcat映像的容器,但是现有的tomcat-users.xml和context.xml并没有被覆盖。 任何想法我做错了覆盖这两个文件?

我想到了。 问题是,我正在执行构build任务的用户没有足够的权利在这些文件夹中写东西。 我所做的是将一个USER root任务添加到Dockerfile中,以root身份执行所有命令。
我的Dockerfile现在看起来像这样:

 FROM tomcat USER root COPY tomcat-users.xml /usr/local/tomcat/conf/ COPY context.xml /usr/local/tomcat/webapps/manager/META-INF/ CMD ["catalina.sh","run"]