【问题标题】:Docker tomcat editing configuration files through dockerfiledocker tomcat通过dockerfile编辑配置文件
【发布时间】:2017-06-14 07:39:37
【问题描述】:

我已经创建了一个 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 并没有被覆盖。知道我做错了什么来覆盖这两个文件吗?

【问题讨论】:

  • 我无法重现此行为。你试过用docker-compose build &amp;&amp; docker-compose up -d重建镜像吗?还可以考虑docker exec -it &lt;container_id&gt; bash 检查文件是否符合预期
  • 我也无法重现。使用正确的文件,图像对我来说看起来不错。正如 Jan Trienes 所提到的,我会尝试使用 docker-compose up build 来确保重建图像。
  • 感谢您的回复。我弄清楚了问题所在,在下面的答案中进行了解释。
  • 如果这个问题是正确的,你应该接受你自己的答案。

标签: tomcat docker containers docker-compose dockerfile


【解决方案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"]

【讨论】:

  • 在我看来,除非您在最后的 CMD 之前添加 USER,否则您将以 root 的身份运行 tomcat,这会带来严重的安全风险。不是这样吗?
猜你喜欢
  • 2011-07-15
  • 2015-08-25
  • 2015-02-27
  • 1970-01-01
  • 2015-12-16
  • 2022-08-18
  • 1970-01-01
  • 2020-11-17
  • 2016-09-08
相关资源
最近更新 更多