更新:清理并直接指出问题和解决方案。
问题:
Docker-tomcat已正确安装并运行,但Manager App中的403 Access错误除外。我的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用户配置(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>
[STEPS&amp; COMMANDS]:
构建Docker镜像
docker build -t borgymanotoy / my-tomcat-docker。
运行Image(my-tomcat-docker并将端口设置为8088)
docker run --name my-tomcat-docker-container -p 8088:8080 -it -d borgymanotoy / my-tomcat-docker
转到容器的bash(通过bash检查容器内的文件)
docker exec -it biyahe-tomcat-docker-container bash
答案 0 :(得分:10)
首先,您需要在容器中公开您的应用程序,以便可以从dockerhost / network连接到它。
docker run -d -p 8000:8080 tomcat:8.5.11-jre8
您需要更改2个文件才能从远程主机访问漫画应用程序。 (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" />
-->
请注意评论部分。
/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 volume或bind mounts。
还要确保重新启动容器,以使更改生效。
答案 1 :(得分:1)
请在执行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日志,配置文件等不同的东西。
答案 2 :(得分:0)
尽管已经很晚了,我还是想留下2美分。
我通过构建示例连续集成系统将解决方案提升到了一个新的水平,该系统只需通过项目IDE运行mvn clean install
即可将战争部署到docker tomcat,同时运行docker tomcat容器。
docker run -p 8080:8080 -d --name tom -v <YOUR_VOLUME>:/usr/local/stagingwebapps wintersoldier/tomcat_ci:1.0