2017-06-14 87 views
3

我已經創建了一個dockerfile和docker-compose,像下面這樣可以在我的容器中創建一個tomcat映像並編輯tomcat用戶,以便我能夠訪問manager gui。
以下四個文件全部位於我運行碼頭的相同文件夾中 - 組成命令。Docker tomcat通過dockerfile編輯配置文件

搬運工-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> 

,當我運行命令泊塢窗,構成了,它產生與完美了tomcat圖像的容器,但現有的tomcat-users.xml中和context.xml中沒有得到覆蓋。任何想法我做錯了覆蓋這兩個文件?

+0

我無法重現此問題。你有沒有嘗試用'docker-compose build && docker-compose up -d'重建圖片?另外考慮'docker exec -it bash'來檢查文件是否如預期的那樣 –

+0

我也無法重現。使用正確的文件,圖像看起來很好。正如Jan Trienes所說,我會嘗試使用docker-compose up build來確保圖像被重建。 – lvthillo

+0

感謝您的回覆。我找出了問題所在,在下面的答案中解釋。 – Krikke93

回答

1

我想通了。問題在於執行構建任務的用戶沒有足夠的權限在這些文件夾中寫入東西。 我所做的是將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"]