作成したWebアプリをDockerコンテナで動かす
1. Dockerネットワーク作成
DBは別コンテナで起動しているPostgreSQLで作成したDBを使用するので、 コンテナ間をつなぐネットワークを作成する。
- tomcat-networkという名称でネットワークを作成する。
> docker network create tomcat-network
- 上記PostgreSQLが作成したネットワークを使用するよう、docker-compose.ymlに以下を追加し、コンテナを再作成する。
postgreSQL:docker-compose.yml
networks:
default:
external:
name: tomcat-network
2. コンテナ作成
CentOSのDockerイメージを取得し、コンテナを起動してTomcatをインストールする。
- CentOSのイメージを取得
> docker pull centos:7
2.1 コンテナ起動
- コンテナ名をtomcatとする
- ポート8080をホストの18080へマッピング
- tomcat-networkを使用
- /share/logsをホストのd:\docker\tomcat\var\logsへマッピング
docker run -it --restart=always -d --name tomcat --network tomcat-network -p 18080:8080 -v d:\docker\tomcat\var\logs:/share/logs centos:7
2.2 Tomcatインストール
- Tomcatのホームページよりtar.gzのBinary Distributionを取得する。
- 取得したtar.gzファイルをコンテナにコピーする。
例)
# docker cp apache-tomcat-9.0.52.tar.gz tomcat:/opt/
- コンテナにJavaをインストールする。
# yum install -y java-11-openjdk
- コピーしたtar.gzファイルを展開する。
例)
# cd /opt/
# tar zxf apache-tomcat-9.0.52.tar.gz
- Tomcat起動時にSpringプロファイルを指定するためbin/catalina.shに以下を追加
例) プロファイルとしてdevを指定
JAVA_OPTS="$JAVA_OPT -Dspring.profiles.active=dev"
- Tomcatを起動する。
# cd apache-tomcat-9.0.52
# bin/startup.sh
3. warファイルのビルドとデプロイ
- devプロファイル用にapplication-dev.ymlを作成し、datasourceを設定する。
ホスト名にはpostgreSQLのコンテナ名を指定する。
src/main/resources/application-dev.yml
spring:
datasource:
type:
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://postgresql:5432/postgres
username: postgres
password: example
- build.gradleが存在するフォルダで以下を実行する。build\libフォルダにwarファイルが出力される。
> gradel build
- 出力されたwarファイルをコンテナの/opt/apache-tomcat-9.0.52/webappsへコピーする。

