いろいろ書いていく

やってみたなど

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

前回の記事ではTomcatコンテナに入ってサンプルアプリをデプロイしてみた.
koimedenshi.hatenablog.com

今回は同じことをDockerfileでやってみる.

環境

$ docker -v
Docker version 18.09.0, build 4d60db4

前回同様サンプルアプリ(sample.war)をCATALINA_BASEにデプロイするが, コンテナに入り込むのではなく, アプリがデプロイされたイメージからコンテナを起動する.

まず以下の内容でDockerfileを作成する.

FROM tomcat:8.5.37

ENV CATALINA_HOME /usr/local/tomcat
ENV PATH $CATALINA_HOME/bin:$PATH
WORKDIR $CATALINA_HOME

RUN set -ex; \
	cd webapps && \
	wget http://tomcat.apache.org/tomcat-8.5-doc/appdev/sample/sample.war 

わりとシンプルだと思うが, ざっくり言うと「tomcat:8.5.37のイメージを用意して, CATALINA_HOME/webappsにsample.warをダウンロードしてね」という指示を書いている.
詳しいことはググってください(ひどい)
tomcat:8.5.37は現時点でのlatestを選択した.

このファイルを保存したディレクトリでdocker buildする.

$ docker build . -t sample:0.1
Sending build context to Docker daemon  2.048kB
Step 1/5 : FROM tomcat:8.5.37
 ---> ef802ca71927
Step 2/5 : ENV CATALINA_HOME /usr/local/tomcat
 ---> Running in 96bc5a455775
Removing intermediate container 96bc5a455775
 ---> 21a687433aee
Step 3/5 : ENV PATH $CATALINA_HOME/bin:$PATH
 ---> Running in 1d2b1a0510fa
Removing intermediate container 1d2b1a0510fa
 ---> 09499132613c
Step 4/5 : WORKDIR $CATALINA_HOME
 ---> Running in e187f9a604f5
Removing intermediate container e187f9a604f5
 ---> 27b0a898e31c
Step 5/5 : RUN set -ex; 	cd webapps && 	wget http://tomcat.apache.org/tomcat-8.5-doc/appdev/sample/sample.war
 ---> Running in 24ec52d55e3c
+ cd webapps
+ wget http://tomcat.apache.org/tomcat-8.5-doc/appdev/sample/sample.war

(略)

Successfully tagged sample:0.1
$ 

イメージ作成に成功したら, 作成したイメージを用いてコンテナを起動する.

$ docker container run --name sample-container -p 80:8080 sample:0.1

(略)

コンテナが起動したら, ブラウザからhttp://localhost/sampleにアクセスしてJSP Pageやservletが正常に開けることを確認.

おわり.

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

$ docker container stop sample-container
sample-container
$ docker container rm sample-container 
sample-container
$ docker image rm sample:0.1

(略)

公式のDockerfileを引用したので, たぶん余計なコマンドが入っていてすみません.
warファイル取得方法はADDを使うとか, これ以外にもいろいろな方法があると思う.