web-dev-qa-db-ja.com

Docker Tomcatユーザー設定が機能しない

更新:クリーンアップし、問題と解決策を直接示します。

問題:

Docker-Tomcatは正しくインストールされ、実行されていましたが、Manager Appの403 Accessエラーは例外でした。また、Docker TomcatがTomcat-users.xml構成を見つけられないようです。

[〜#〜]ソリューション[〜#〜]

答えてくれて FarhadSanket に感謝します。

[ファイル]:

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]:

  1. Dockerイメージをビルドする

    docker build -t borgymanotoy/my-Tomcat-docker。

  2. イメージを実行(my-Tomcat-dockerとポートを8088に設定)

    docker run --name my-Tomcat-docker-container -p 8088:8080 -it -d borgymanotoy/my-Tomcat-docker

  3. コンテナーのbashに移動します(bashを通じてコン​​テナー内のファイルを確認するには)

    docker exec -it biyahe-Tomcat-docker-container bash

12
Borgy Manotoy

まず、アプリケーションをコンテナーに公開して、dockerhost/networkから接続できるようにする必要があります。

docker run -d -p 8000:8080 Tomcat:8.5.11-jre8

リモートホストからマンガアプリにアクセスするには、2つのファイルを変更する必要があります。 (Dockerホストのブラウザーはリモートと見なされ、コンテナーのループバックで受信されたパケットのみがTomcatのローカルと見なされます)

  1. /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" />
    -->
    

コメント付きのセクションに注意してください。

  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ボリュームまたはバインドマウントを使用することをお勧めします。

また、コンテナを再起動して、変更を有効にしてください。

9
Farhad Farahi

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ファイルなどのさまざまなものをチェックする場合。

1
ProgrammerBoy

これはかなり遅いですが、私は私の2セントを残したいと思いました。

Docker Tomcatコンテナを実行しながらmvn clean install via project IDEを実行するだけでwarをDocker Tomcatにデプロイするサンプル継続的インテグレーションシステムを構築することにより、このソリューションを次のレベルに引き上げました。

  • これにより、新しいビルドが利用可能になるたびにTomcatコンテナを再起動する必要があるという問題が解決されます。 Tomcatの自動展開を利用する
  • 共有ボリュームを使用して、複数のwarを共有ボリュームにデプロイし、スクリプトがwarを取得してTomcat webappsにデプロイできるようにします
  • マネージャーGUIにアクセスするための標準ユーザー「admin」が付属しています。
  • 公開dockerリポジトリで利用可能:docker run -p 8080:8080 -d --name tom -v <YOUR_VOLUME>:/usr/local/stagingwebapps wintersoldier/Tomcat_ci:1.0
  • 共有ボリュームにドロップされたすべてのwarファイルを取得し、GUI経由で展開するオプションを使用して、それらを即座にTomcatサーバーに展開します。
  • これが サンプルアプリケーション であり、必要なMavenの変更と探査するDockerファイルがあります
0
Winter Soldier