【AWS】【Docker】【Java】Amazon Linux 2 でJavaのWebアプリケーションをデプロイするまで(Docker編)
以前、AWS EC2のAmazon Linux 2の環境にJavaのWebアプリケーションをデプロイするまでの手順解説の記事を書きました。
[Amazon Linux 2でJavaのWebアプリケーション動作環境を構築してデプロイするまで]https://case10.hateblo.jp/entry/2020/10/06/165543
今回はJava, TomcatをDockerで動かす場合の手順になります。
※DBはDocker使わずにホストに直接インストールする前提。
Dockerのインストール
# Dockerのインストール $ sudo yum install -y docker # サービスの起動 $ sudo systemctl start docker # 確認 $ sudo docker version # ユーザーの追加(必要ない??) $ sudo usermod -a -G docker ec2-user # システムの自動起動設定 $ sudo systemctl enable docker
マウント用のディレクトリの作成
Docker上のTomcatとマウントする用のディレクトリを作成しておく。
マウントしておくと、ここにファイルをおけばコンテナ上にもファイルが配置される。
また、コンテナを削除してもファイルが削除されないようになる。
# Tomcat用のディレクトリ作成 $ sudo mkdir /opt/tomcat
Tomcatのコンテナを起動
# TomcatのDockerイメージ取得 $ sudo docker pull tomcat # 取得できたか確認 $ sudo docker images # ホスト側の/opt/tomcat/gropAディレクトリを/usr/local/tomcat/にマウントする # --nameオプションではコンテナ名を指定。任意。 $ sudo docker run -d -p 8080:8080 -v /opt/tomcat:/usr/local/tomcat --name tomcatA tomcat # 起動したか確認 $ duso docker ps # インスタンスを再起動した時に自動でコンテナが起動するように設定 $ sudo docker update --restart=always tomcatA
Tomcatの設定
tomcatではwebapps配下にデプロイするファイルを配置する。
しかしコンテナのTomcatではデフォルトではWebappsの中身は空で、webapps.distに必要なファイルが入っているので、中身をコピーする。
※リネームしても良いかも。
リネームの場合は、どこのディレクトリとマウントしているかによって、リネームができなくなる場合があるので注意。
# Docker(Tomcat)に入り込む $ sudo docker exec -it tomcatA bash # Webapps.distの中身をWebappsにコピー $ cp -r webapps.dist/* webapps # Dockerから抜ける $ exit
動作検証
ブラウザから
http://<パブリックDNS>:8080
にアクセスしてTomcatのホーム画面が出るかを確認する。
マウントができているか確認したい場合は、ホスト側でtomcat/webappsの中に適当なディレクトリを作成し、index.htmlを適当に作成する。
ブラウザから
http://<パブリックDNS>:8080/<作成したディレクトリ>
にアクセスして、index.htmlの内容が表示されていればOK。
あとは必要に応じてwarファイルを配置してデプロイすればWebアプリケーションが動作する。