いろいろ書いていく

やってみたなど

Docker Tomcatにsample.warをデプロイする

これまでの記事で, DockerでApache Tomcatコンテナを構築する方法を2通りやってみた.
DockerでTomcatその1 - いろいろ書いていくつもり
DockerでTomcatその2 ( docker build ) - いろいろ書いていくつもり

といってもコンテナを起動しただけで味気ないので, 今回はサンプルアプリをデプロイしてみる.

環境

$ docker -v
Docker version 18.09.0, build 4d60db4

アプリのデプロイ手順

Tomcat公式で公開されているサンプルアプリ(sample.war)を, TomcatコンテナのCATALINA_BASE/webappsに保存するだけ.
http://tomcat.apache.org/tomcat-8.5-doc/appdev/sample/

warファイルを保存すると, 自動的にアプリがデプロイされる.
CATALINA_BASEは環境によって異なるが, Docker公式イメージではCATALINA_BASE=/usr/local/tomcat/ となる(Docker Hubに書いてある).
https://hub.docker.com/_/tomcat/

warファイルの保存方法はいろいろ考えられるが, 今回はコンテナに入り込んで手動で行う.
ほかの方法は次以降の記事で書く, かも.

手順

1. tomcat container起動
以下のコマンドによりTomcatコンテナを起動.

$ docker container run --name tomcat-example -p 80:8080 tomcat:8.5.35
(略)
XX-Dec-2018 XX:XX:XX.XXX INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 1639 ms

イメージがローカルに保存されていない場合, イメージのダウンロードも同時に行われる.

2. コンテナ内でbashプロセスを起動し, ダウンロード
ターミナルをもうひとつ開いて, docker execコマンドでコンテナ内でbashを起動

$ docker exec -it tomcat-example /bin/bash
root@d37eaefd6537:/usr/local/tomcat#

3. /usr/local/tomcat/webappsに移動し, warファイルをダウンロードする

root@d37eaefd6537:/usr/local/tomcat# cd webapps
root@d37eaefd6537:/usr/local/tomcat/webapps# wget http://tomcat.apache.org/tomcat-8.5-doc/appdev/sample/sample.war
Saving to: ‘sample.war’

sample.war          100%[===================>]   4.50K  --.-KB/s    in 0s      

2018-12-XX (380 MB/s) - ‘sample.war’ saved [4606/4606]

4. ブラウザで動作確認
ブラウザでhttp://localhost/sampleにアクセス.
JSP pageやServletへのリンクをクリックして, 正常に動作することを確認.

5. おわり
不要なコンテナやイメージは削除.

$ docker container stop tomcat-example
tomcat-example
$ docker container rm tomcat-example 
tomcat-example
$ docker image rm tomcat:8.5.35
Untagged: tomcat:8.5.35
(略)

こういう手動操作があるような場合は, コンテナにbashwgetをインストールしてあると楽ですね.