Docker Tomcatにsample.warをデプロイする Dockerfile編
前回の記事ではTomcatコンテナに入ってサンプルアプリをデプロイしてみた.
koimedenshi.hatenablog.com
今回は同じことをDockerfileでやってみる.
環境
- Docker host on Oracle VirtualBox VM (Ubuntu 18.04) on macOS Mojave
- Docker 18.09.0
$ 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を使うとか, これ以外にもいろいろな方法があると思う.