Docker tomcat通过dockerfile编辑配置文件

时间:2017-06-14 07:39:38

标签: tomcat docker containers docker-compose dockerfile

我已经创建了一个dockerfile和docker-compose,如下所示,这是为了在我的容器中创建一个tomcat图像并编辑tomcat用户,以便我能够访问管理员gui。 下面的四个文件都与我运行 docker-compose up 命令的文件夹在同一文件夹中。

docker-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 up 时,它会完美地生成带有tomcat图像的容器,但是现有的tomcat-users.xml和context.xml没有被覆盖。知道我做错了什么来覆盖这两个文件?

1 个答案:

答案 0 :(得分:2)

我明白了。问题是我执行构建任务的用户没有足够的权限在这些文件夹中写东西。我所做的是将一个 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"]