ホーム > Java > Spring Framework > Webアプリケーション > webアプリをdockerで動かす
04_webアプリをdockerで動かす.md

作成した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へコピーする。

リンク

コーポレートサイトにちょうどいいCMS、baserCMS