更新:クリーンアップし、問題と解決策を直接示します。
問題:
Docker-Tomcatは正しくインストールされ、実行されていましたが、Manager Appの403 Accessエラーは例外でした。また、Docker TomcatがTomcat-users.xml構成を見つけられないようです。
[〜#〜]ソリューション[〜#〜]
答えてくれて Farhad と Sanket に感謝します。
[ファイル]:
Dockerfile
FROM Tomcat:8.5.11
MAINTAINER Borgy Manotoy <[email protected]>
# 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&COMMANDS]:
Dockerイメージをビルドする
docker build -t borgymanotoy/my-Tomcat-docker。
イメージを実行(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
まず、アプリケーションをコンテナーに公開して、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ボリュームまたはバインドマウントを使用することをお勧めします。
また、コンテナを再起動して、変更を有効にしてください。
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ファイルなどのさまざまなものをチェックする場合。
これはかなり遅いですが、私は私の2セントを残したいと思いました。
Docker Tomcatコンテナを実行しながらmvn clean install
via project IDEを実行するだけでwarをDocker Tomcatにデプロイするサンプル継続的インテグレーションシステムを構築することにより、このソリューションを次のレベルに引き上げました。
docker run -p 8080:8080 -d --name tom -v <YOUR_VOLUME>:/usr/local/stagingwebapps wintersoldier/Tomcat_ci:1.0