首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker Tomcat用户配置不工作

Docker Tomcat用户配置不工作
EN

Stack Overflow用户
提问于 2017-03-09 10:00:17
回答 3查看 20K关注 0票数 13

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

问题:

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

溶液

感谢法哈德桑基特给出的答案。

文件

Dockerfile

代码语言:javascript
复制
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)

代码语言:javascript
复制
<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)应用程序上下文

代码语言:javascript
复制
<?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. 塑造码头形象 码头建造-t博格马诺玩具/我-猫-码头。
  2. 运行映像(并将端口设置为8088) 船坞运行-命名我的-猫-码头-集装箱-p 8088:8080 -it -d博格马诺玩具/我-猫-码头
  3. 转到容器的bash (通过bash检查容器内的文件) 码头主管-it biyahe-tomcat码头-集装箱bash
EN

回答 3

Stack Overflow用户

发布于 2017-03-09 14:14:08

首先,您需要在容器中公开应用程序,这样您就可以从dockerhost/网络连接到它。

代码语言:javascript
复制
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注意注释部分。

请注意评论部分。

  1. 正如你在问题中所说的,/usr/local/tomcat/conf/tomcat-users.xml

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

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

票数 14
EN

Stack Overflow用户

发布于 2017-03-09 12:38:56

当您执行类似的docker run时请指定端口(我相信mine/tomcat-version是您的图像名称),

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

然后使用

代码语言:javascript
复制
http://<ipaddress>:8000/manager/html

要获得坞中的主机ip地址,需要执行docker-machine ip

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

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

票数 1
EN

Stack Overflow用户

发布于 2018-07-20 17:20:42

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

我通过构建一个示例持续集成系统,通过通过project运行mvn clean install来将wars部署到码头tomcat,从而将这个解决方案提升到下一个级别,同时让docker容器运行。

  • 这解决了每次新构建可用时都必须重新启动tomcat容器的问题。利用tomcat的自动部署
  • 使用共享卷,这样您就可以将多个wars部署到共享卷中,并且脚本将获取wars并部署到tomcat and应用程序中。
  • 附带一个标准用户'admin‘,以便访问管理器GUI。
  • 公共码头回购:docker run -p 8080:8080 -d --name tom -v <YOUR_VOLUME>:/usr/local/stagingwebapps wintersoldier/tomcat_ci:1.0
  • 获取放置到共享卷中的任何war文件,并立即将其部署到tomcat服务器,并提供通过GUI部署该文件的选项。
  • 下面是一个包含必需的maven更改& docker文件的样本应用,以供探索
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42692206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档