【问题标题】:Docker Tomcat users configuration not workingDocker Tomcat 用户配置不起作用
【发布时间】:2017-07-30 06:04:18
【问题描述】:

更新:清理并直接指出问题和解决方案。

问题:

Docker-tomcat 已正确安装并运行,但 Manager App 中出现 403 Access 错误。看来我的 docker tomcat 也找不到我的 tomcat-users.xml 配置。

解决方案

感谢FarhadSanket 的解答。

[文件]:

Dockerfile

FROM tomcat:8.5.11
MAINTAINER Borgy Manotoy <borgymanotoy@ujeaze.com>

# Update Apt and then install Nano editor (RUN can be removed)
RUN apt-get update && apt-get install -y \
    nano \
&& mkdir -p /usr/local/tomcat/conf

# Copy configurations (Tomcat users, Manager app)
COPY tomcat-users.xml /usr/local/tomcat/conf/
COPY context.xml /usr/local/tomcat/webapps/manager/META-INF/

Tomcat 用户配置 (conf/tomcat-users.xml)

<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">
    <role rolename="manager-gui"/>
    <role rolename="manager-script"/>
    <user username="admin" password="password" roles="manager-gui,manager-script" />
</tomcat-users>

应用程序上下文 (webapps/manager/META-INF/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>

[步骤和命令]:

  1. 构建 Docker 镜像

    docker build -t borgymanotoy/my-tomcat-docker 。

  2. 运行镜像(my-tomcat-docker 并将端口设置为 8088)

    docker run --name my-tomcat-docker-container -p 8088:8080 -it -d borgymanotoy/my-tomcat-docker

  3. 转到容器的 bash(通过 bash 检查容器内的文件)

    docker exec -it biyahe-tomcat-docker-container bash

【问题讨论】:

    标签: docker dockerfile tomcat8


    【解决方案1】:

    首先您需要在容器中公开您的应用程序,以便您可以从 dockerhost/network 连接到它。

    docker run -d -p 8000:8080 tomcat:8.5.11-jre8
    

    您需要更改 2 个文件才能从远程主机访问 mangaer 应用程序。 (Docker主机上的浏览器被认为是远程的,只有在容器环回上收到的数据包被认为是本地的tomcat)

    1. /usr/local/tomcat/webapps/manager/META-INF/context.xml注意注释部分。

      <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" />
      -->
      

    请注意评论部分。

    1. /usr/local/tomcat/conf/tomcat-users.xml 如您在问题中所述。

      <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">
      <role rolename="manager-gui"/>
      <role rolename="manager-script"/>
      <user username="admin" password="password" roles="manager-gui,manager-script" />
      

    为了对容器中的文件进行更改,您可以尝试构建自己的映像,但我建议使用 docker 卷或绑定挂载。

    还要确保重新启动容器以使更改生效。

    【讨论】:

    • 为我工作,但你必须用 tomcat 服务器重启你的 docker 容器
    【解决方案2】:

    当你点赞docker run 时请指定端口(我相信mine/tomcat-version 是你的图片名称),

    docker run -p 8000:8080 -it -d --name MyContainerName mine/tomcat-version

    然后使用,访问管理器页面,

    http://<ipaddress>:8000/manager/html
    

    在docker中获取主机ip地址需要执行docker-machine ip

    添加信息:您也可以使用以下命令进入容器,

    docker exec -it MyContainerName bash 如果你想检查不同的东西,比如 tomcat 日志、conf 文件等。

    【讨论】:

    • 我忘记指出我已经将端口设置为 8088 并为容器分配了名称。感谢 'docker exec...' 我需要它在容器内工作。
    • 403 错误它似乎没有看到我的 tomcat-users.xml 中的更改,尽管它已经应用了。我需要按照 #1 中 farhad 的回答所示更改 context.xml,它现在可以工作了 :) 谢谢大家!
    【解决方案3】:

    虽然已经很晚了,但我还是想留下我的 2 美分。

    我通过构建一个示例持续集成系统将这个解决方案提升到一个新的水平,只需通过项目 IDE 运行 mvn clean install 同时让 docker tomcat 容器运行即可将战争部署到 docker tomcat。

    • 这解决了每次有新版本可用时都必须重新启动 tomcat-container 的问题。利用tomcat的自动部署
    • 使用共享卷,以便您可以将多个战争部署到共享卷中,并且脚本会选择您的战争并部署到 tomcat webapps
    • 带有标准用户“admin”,以便访问管理器 GUI。
    • 在公共 docker repo 上可用:docker run -p 8080:8080 -d --name tom -v &lt;YOUR_VOLUME&gt;:/usr/local/stagingwebapps wintersoldier/tomcat_ci:1.0
    • 拾取掉到共享卷中的所有战争文件,并立即将它们部署到 tomcat 服务器,并可选择通过 GUI 进行部署
    • 这是一个 sample application,其中包含所需的 maven 更改和 docker 文件以供探索

    【讨论】:

      猜你喜欢
      • 2013-11-27
      • 2016-01-12
      • 1970-01-01
      • 2017-06-27
      • 2020-05-28
      • 2020-09-01
      • 2023-03-15
      • 2020-08-31
      • 1970-01-01
      相关资源
      最近更新 更多