はじめに
javaの実行環境用のコンテナをDockerで作成して、warファイルにしたspring-bootのサービスを起動してみました。
設定ファイル
version: '3.6'
services:
java:
build: ./docker/java
ports:
- 8080:8080
tty: true
volumes:
- .:/usr/src
command: java -jar /usr/src/WebApp-1.0-SNAPSHOT.war
build: ./docker/java
⇒Dockerfileの場所を指しています。コンテナを立ち上げる際に、読み込んでそうです。
command: java -jar /usr/src/WebApp-1.0-SNAPSHOT.war
⇒コンテナを立ち上げた後に、コマンドを実行してくれます。(今回はwarファイルを起動してくれます。)
※commandは記載しなくてもコンテナが起動した後にdocker-compose exec サービス名 bash
でコンテナ内に入ってwarファイルが格納されているディレクトリで直接実行してもいけます。
FROM openjdk:18
javaのバージョンを指定しています。今回は18にしました。
バージョンによっては起動時にエラーになるので注意してください。
ディレクトリ構成
/usr/ap
|
|-WebApp-1.0-SNAPSHOT.war
|-docker
| |-java
| |-Dockerfile
|-docker-compose.yaml
java
簡易APIを実装しました。
今回はpackageビルドjarファイルではなく、warファイルを生成するようにしました。
pom.xmlで設定できます。デフォルトはjarだと思います。
起動方法
docker-compose.yamlが格納されているディレクトリ内でdocker-compose up -d
です。
コンテナが起動しているかはdocker ps
で確認できます。
最後に
Dockerのコンテナ内の環境でsystemdとかserviceコマンドは使えなさそうです。
なのでサービスに登録して実行みたいなことができないかもしれません。
ただ、コンテナで立ち上げたサービスはOSもしくはコンテナからログアウト(sshの接続を切る)してもサービスは常駐してくれます。