なんだかGoodVibes

日々の勉強メモです。

【Docker】docker-composeをつかってみる

こんにちは。
本日はdocker-compose.ymlについてのメモです。

概要

以前作成したapp01db01の環境を
docker-compose.ymlを使って起動する。

ファイルの配置は以下です。

- docker-compose.yml
- Dockerfile.db01
- Dockerfile.app01
- springbootapp01
  - demo
    - target
      - demo.jar


docker-compose.ymlの作成

一旦、全体を以下に記載します。

  • docker-compose.yml
version: '3'

networks:
  default:
    name: bridge
  mynetwork01:
    name: mynetwork01

services:
  db01:
    container_name: db01
    build:
      context: .
      dockerfile: Dockerfile.db01
    tty: false
    ports:
      - 5432:5432
    networks:
      - mynetwork01
    environment:
      - POSTGRES_USER=mydb
      - POSTGRES_PASSWORD=postgres
      - POSTGRES_DB=mydb
  app01:
    container_name: app01
    build:
      context: .
      dockerfile: Dockerfile.app01
    tty: false
    ports:
      - 8080:8080
    networks:
      - mynetwork01
    environment:
      - POSTGRES_USER=mydb
      - POSTGRES_PASSWORD=postgres
      - POSTGRES_DB=mydb
      - DRIVER_CLASS_NAME=org.postgresql.Driver
      - DATASOURCE=jdbc:postgresql://db01:5432/mydb
  • Dockerfile.db01
FROM postgres:14
  • Dockerfile.app01
FROM adoptopenjdk/openjdk11:alpine-jre

WORKDIR /app
COPY ./springbootapp01/demo/target/demo.jar .
CMD ["java", "-jar", "demo.jar"]

大まかな書き方について以下に記載します。

version

そのままですね。
使用するバージョンを指定します。

networks

ネットワークの情報を記載します。
今回は、以前の記事で作成したmynetwork01を指定しています。

services

serviceを定義します。
今回でいうと、db01app01 のことです。
ここに起動するコンテナの情報を記載します。


docker-composeのコマンド

docker-compose.ymlの場所に移動して実行してください。

ビルド

以下のコマンドを実行してビルドします。

$ docker-compose build

各サービスが完了したらOKです。

Building db01
[+] Building 0.2s (5/5) FINISHED 
...
...

Building app01
[+] Building 11.8s (8/8) FINISHED 
...
...
起動

以下のコマンドを実行してください。

$ docker-compose up -d

-dオプションは、バックグラウンド起動を指定するオプションです。

以下の表示になったら起動完了です。

Creating app01 ... done
Creating db01  ... done
停止

以下のコマンドを実行してください。

$ docker-compose stop

以下の表示になったら停止完了です。

Stopping app01 ... done
Stopping db01  ... done
削除

以下のコマンドを実行してください。

$ docker-compose rm

以下の表示になったら削除完了です。

Removing app01 ... done
Removing db01  ... done



以上です。