コンテンツにスキップ

docker-compose.yml

docker-compose.yml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
services:
  example-service:
    container_name: example-service
    environment:
      - API_KEY=${API_KEY:?} # ${ENV_NAME:?}で必須にできる
    image: ${WEB_BACKEND_IMAGE:?}
    # 以下で./src/example-service/Dockerfileからビルドすることができる
    # build:
    #   context: ./src/example-service
    #   dockerfile: ./Dockerfile
    #   args: # イメージをビルドする時に使う環境変数
    #     - DATABASE_URL=mysql://$MARIADB_USER:$MARIADB_PASSWORD@mariadb:3306/$MARIADB_DATABASE
    ports:
      - "${PORT:-8080}:8080" # ${ENV_NAME:-DEFAULT_VALUE}でデフォルト値を指定できる
    restart: always
    volumes:
      - ./example-service/settings.conf:/app/settings.conf:ro
    # env_file:
    #   - .env  # .envを明示的に読み込ませる

Compose file reference | Docker Docs

docker-compose.yml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
services: # この下に複数サービスを定義する
  mariadb: # サービス名
    image: mariadb:11.6.2 # 使用するイメージ名とタグ
    restart: always # コンテナ終了時の振る舞い(no: 再起動しない, always: 常に再起動する, on-failure[:max-retries]: 終了コードがエラーの場合n回再起動する)
    environment: # コンテナ実行時の環境変数
      - MARIADB_USER=$MARIADB_USER # .envから参照させることができる
      - MARIADB_PASSWORD=$MARIADB_PASSWORD
      - MARIADB_DATABASE=$MARIADB_DATABASE
      - MARIADB_ROOT_PASSWORD=$MARIADB_PASSWORD
    ports: # ポートの設定 (${ホストのポート}:${コンテナのポート})
      - 3306:3306
    volumes: # ボリュームの設定 (${ホストのディレクトリ}:${コンテナのディレクトリ})
      - ./mariadb/var/lib/mysql:/var/lib/mysql
  notepad-backend:
    build: # イメージ名だけでなく、細かく指定したい場合はimageでなくbuildを使用する
      context: ./notepad-backend # Dockerfileのあるディレクトリ
      dockerfile: Dockerfile # Dockerfileのファイル名
      args: # イメージをビルドする時に使う環境変数
        - DATABASE_URL=mysql://$MARIADB_USER:$MARIADB_PASSWORD@mariadb:3306/$MARIADB_DATABASE
    restart: always
    environment: # コンテナ実行時の環境変数
      - DATABASE_URL=mysql://$MARIADB_USER:$MARIADB_PASSWORD@mariadb:3306/$MARIADB_DATABASE
    ports:
      # ホストマシンからポートにアクセスしたいときは設定する。
      # サービス同士は設定せずともhttp://${SERVICE_NAME}:${CONTAINER_PORT}などでアクセスできる。
      - 18081:8080
    depends_on:
      - mariadb # 先に起動していないといけないサービス