Dockerで別コンテナでApache+Tomcat連携する

Dockerで別コンテナでApache+Tomcat連携する

別コンテナでApacheとTomcatを立てて、コンテナ間通信を試します。

--linkオプションは非推奨なので使いません。

イメージ

$ docker pull httpd:alpine
$ docker pull tomcat:alpine

イメージをダウンロードします。軽量なのでAlpine Linuxベースのイメージを使用します。

コンテナ

$ docker run -d -p 80:80 --name httpdalpine httpd:alpine
$ docker run -d --name tomcatalpine tomcat:alpine

httpdのみホストの80ポートとコンテナの80ポートをマッピングします。

apacheからtomcatへの通信は8009ポートを経由するので、8080ポートはマッピングする必要がありません。

$ docker ps
CONTAINER ID IMAGE         COMMAND            CREATED       STATUS       PORTS              NAMES
4cad66f9e8fe tomcat:alpine "catalina.sh run"  8 minutes ago Up 8 minutes 8080/tcp           tomcatalpine
51e88db0f1d0 httpd:alpine  "httpd-foreground" 8 minutes ago Up 8 minutes 0.0.0.0:80->80/tcp httpdalpine

COMMANDがcatalina.sh runとhttpd-foregroundであることを確認しておきます。

Dockerで別コンテナでApache+Tomcat連携する

ipアドレス確認

$ docker inspect bridge

TomcatのコンテナのIPアドレスを確認しておきます。ネットワーク未指定の場合はbridgeというネットワークにコンテナ作成されます。同一ネットワークの為コンテナ間通信が可能となります。

コンテナ IPアドレス
Apache 172.17.0.2
Tomcat 172.17.0.3

IPは上記の通りでした。

httpd.conf

httpdにログインしてhttpd.confなど修正します。Alpine Linuxなのでログインシェルはashです。

$ docker exec -it httpdalpine ash

httpd.confの修正、httpd-proxy.conf作成を行います。

vi /usr/local/apache2/conf/httpd.conf

httpd.conf

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
Include conf/extra/httpd-proxy.conf

上記の3行を有効にしてAJPプロトコルを使用します。

httpd-proxy.conf

$ echo 'ProxyPass / ajp://172.17.0.3:8009/' > /usr/local/apache2/conf/extra/httpd-proxy.conf

httpd-proxy.confファイルを作成します。このファイルにTomcatのIPアドレスを指定します。

※ProxyPathではなくProxyPass

※172.17.0.3はTomcatコンテナ(Alpine Linux)のIPアドレス

$ httpd -t
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
Sytax OK
$ exit

文法にエラーがないことを確認してexitで抜けます。ServerNameは無視してOK

コンテナ再起動

$ docker restart httpdalpine

コンテナ再起動します。

ブラウザで表示確認

403 Forbidden

Dockerで別コンテナでApache+Tomcat連携する

404 Not Found

Dockerで別コンテナでApache+Tomcat連携する

ポート80でTomcatのウェルカムページが表示されていれば、Apache経由でTomcatにアクセスできていることが確認できます。

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました