Actualización: limpieza e indicar directamente el problema y la solución.
PROBLEMA:
Docker-tomcat se instaló y ejecutó correctamente, excepto por el error de acceso 403 en la aplicación Manager. También parece que mi docker tomcat no puede encontrar mi configuración tomcat-users.xml.
SOLUCIÓN
Gracias a Farhad y Sanket por las respuestas.
[Archivos]:
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/Configuración de usuarios de 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>Contexto de la aplicación (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>[PASOS Y COMANDOS]:
Crear imagen acoplable
docker build -t borgymanotoy/my-tomcat-docker.
Ejecute Image (my-tomcat-docker y establezca el puerto en 8088)
docker run --name my-tomcat-docker-container -p 8088:8080 -it -d borgymanotoy/my-tomcat-docker
Vaya a bash del contenedor (para verificar archivos dentro del contenedor a través de bash)
docker exec -it biyahe-tomcat-docker-container bash
Primero debe exponer su aplicación en el contenedor, para que pueda conectarse desde dockerhost/network.
docker run -d -p 8000:8080 tomcat:8.5.11-jre8Debe cambiar 2 archivos para acceder a la aplicación mangaer desde el host remoto. (El navegador en el host Docker se considera remoto, solo los paquetes recibidos en el bucle invertido de los contenedores se consideran locales para Tomcat)
/usr/local/tomcat/webapps/manager/META-INF/context.xml Tenga en cuenta la sección comentada.
<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" /> -->Tenga en cuenta la sección comentada.
/usr/local/tomcat/conf/tomcat-users.xml como indicó en la pregunta.
<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" />Para realizar cambios en los archivos en el contenedor, puede intentar crear su propia imagen, pero le sugiero que use volúmenes acoplables o montajes de enlace.
También asegúrese de reiniciar el contenedor para que los cambios surtan efecto.
Especifique el puerto cuando docker run (creo mine/tomcat-version es el nombre de su imagen),
docker run -p 8000:8080 -it -d --name MyContainerName mine/tomcat-version
luego acceda a la página del administrador usando,
http://<ipaddress>:8000/manager/html Para obtener la dirección IP del host en la ventana acoplable, es necesario ejecutar docker-machine ip
Información adicional: también puede ingresar al contenedor usando el siguiente comando,
docker exec -it MyContainerName bash si desea verificar diferentes cosas como registros de tomcat, archivos conf, etc.
Aunque esto es bastante tarde, quería dejar mis 2 centavos.
Llevé esta solución al siguiente nivel mediante la creación de un sistema de integración continua de muestra que implementa wars en docker tomcat simplemente ejecutando mvn clean install a través del IDE del proyecto mientras se ejecuta el contenedor docker tomcat.
docker run -p 8080:8080 -d --name tom -v <YOUR_VOLUME>:/usr/local/stagingwebapps wintersoldier/tomcat_ci:1.0