Docker Tomcat用户配置不工作

Docker Tomcat用户配置不工作,docker,dockerfile,tomcat8,Docker,Dockerfile,Tomcat8,更新:清理并直接指出问题和解决方案 问题: Docker tomcat已正确安装并运行,除了Manager应用程序中的403访问错误。我的docker tomcat似乎也找不到我的tomcat-users.xml配置 解决方案 感谢和的回答 [文件]: Dockerfile FROM tomcat:8.5.11 MAINTAINER Borgy Manotoy <borgymanotoy@ujeaze.com> # Update Apt and then install Nano

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

问题:

Docker tomcat已正确安装并运行,除了Manager应用程序中的403访问错误。我的docker tomcat似乎也找不到我的tomcat-users.xml配置

解决方案

感谢和的回答

[文件]:

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的
:8.5.11
维护者Borgy Manotoy
#更新Apt,然后安装Nano编辑器(可以删除运行)
运行apt-get-update&&apt-get-install-y\
纳米级\
&&mkdir-p/usr/local/tomcat/conf
#复制配置(Tomcat用户、Manager应用程序)
复制tomcat-users.xml/usr/local/tomcat/conf/
复制context.xml/usr/local/tomcat/webapps/manager/META-INF/
Tomcat用户配置(conf/Tomcat Users.xml)


应用程序上下文(webapps/manager/META-INF/Context.xml)


[步骤和命令]:

  • 建立码头工人形象

    docker build-t borgymanotoy/我的tomcat docker

  • 运行映像(我的tomcat docker并将端口设置为8088)

    docker run——命名我的tomcat docker容器-p8088:8080-it-d borgymanotoy/我的tomcat docker

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

    docker exec-it biyahe tomcat docker容器bash


  • 请在执行类似的
    docker运行时指定端口(我相信
    mine/tomcat version
    是您的图像名称)

    docker-run-p8000:8080-it-d--name MyContainerName-mine/tomcat版本

    然后使用访问管理器页面

    http://<ipaddress>:8000/manager/html
    
    http://:8000/manager/html
    
    要获取docker中的主机ip地址,需要执行
    docker机器ip

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


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

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

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

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

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


    另外,请确保重新启动容器,以便更改生效。

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

    我构建了一个示例持续集成系统,通过项目IDE运行
    mvn clean install
    ,同时运行docker tomcat容器,将WAR部署到docker tomcat,从而将此解决方案提升到了一个新的层次

    • 这解决了每次新构建可用时都必须重新启动tomcat容器的问题。利用tomcat的自动部署
    • 使用共享卷,以便您可以将多个WAR部署到共享卷中,并且脚本将拾取您的WAR并部署到tomcat webapps
    • 带有标准用户“admin”,以便访问manager GUI
    • 可在公共docker repo上获得:
      docker run-p 8080:8080-d——名称tom-v:/usr/local/stagingwebapps wintersoldier/tomcat_ci:1.0
    • 拾取掉到共享卷上的任何war文件,并立即将其部署到tomcat服务器,同时还可以选择通过GUI进行部署
    • 下面是一个包含所需maven更改和docker文件的示例

    我忘了指出我已经将端口设置为8088并为容器分配了一个名称。感谢“docker exec…”我需要它来在容器内工作。403错误似乎没有看到tomcat-users.xml中的更改,尽管它已经应用。我需要修改context.xml,如farhad在#1中的回答所示,现在它可以工作了:)谢谢大家!为我工作,但您必须使用tomcat服务器重新启动docker容器
    docker run -d -p 8000:8080 tomcat:8.5.11-jre8
    
    <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" />
    -->
    
    <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" />