0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

#0072(2024/03/21)Docker Composeの設定共通化

Last updated at Posted at 2025-03-21

Docker Composeの設定共通化

Docker Composeファイル(docker-compose.yaml)を作成する際、同じ設定や環境変数を繰り返し書くのを避け、効率的に管理する方法として、x-プレフィックスという仕組みがあります。


🔹 x-プレフィックスとは?

Docker Composeでは、標準の予約語以外にもカスタム設定を記述できます。こうした設定に使用されるのがx-プレフィックスです。Docker Compose自身はこのキーを特別に処理せず、ユーザーが自由に共通設定や再利用可能なパーツとして活用できます。

代表的な活用例として以下の2つがあります。

  • x-compose:複数のサービスで共通する設定をまとめて定義
  • x-env:複数のサービスで使われる環境変数をまとめて管理

🔹 x-composeの活用例

複数サービスで共通する設定(例えばリスタートポリシーやログ設定など)を一元管理するために、x-composeセクションを定義し再利用します。

記述例

version: '3.9'

x-compose: &common-settings
  restart: always
  logging:
    driver: "json-file"
    options:
      max-size: "10m"
      max-file: "3"

services:
  frontend:
    image: frontend-app:latest
    <<: *common-settings
    ports:
      - "3000:3000"

  backend:
    image: backend-app:latest
    <<: *common-settings
    ports:
      - "4000:4000"

  api:
    image: api-app:latest
    <<: *common-settings
    ports:
      - "5000:5000"
  • &common-settingsで共通設定を定義し、アンカーとして登録します。
  • 各サービスは<<: *common-settingsでその設定を参照し再利用します。

これにより、冗長な設定を防ぎ、設定変更時のメンテナンスが容易になります。


🔹 x-envの活用例

複数のサービスで共通して利用される環境変数を一元管理するために、x-envセクションを使って設定します。

記述例

version: '3.9'

x-env: &common-env
  DATABASE_URL: postgres://user:password@db:5432/mydb
  REDIS_URL: redis://redis:6379/0
  LOG_LEVEL: info

services:
  web:
    image: myweb:latest
    environment:
      <<: *common-env
      API_KEY: "web-specific-key"

  worker:
    image: myworker:latest
    environment:
      <<: *common-env
      API_KEY: "worker-specific-key"

  db:
    image: postgres:15
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
  • 共通環境変数をx-envセクションで設定し、アンカー化します。
  • 各サービスは<<: *common-envで共通環境変数を参照し、追加でサービス固有の環境変数も指定できます。

🔹 利用するメリット

記述方法 主な用途 メリット
x-compose restartやloggingなどの設定共通化 冗長な設定の排除、メンテナンス性の向上
x-env DATABASE_URLなど環境変数の共通管理 環境変数の効率的な管理と設定ミスの防止

🔹 まとめ

Docker Composeのx-composex-envを活用することで、複数サービス間の設定や環境変数を効率よく共通化でき、Docker環境の運用管理が劇的に改善します。設定変更が容易になり、複雑な構成や大規模プロジェクトで特に効果を発揮しますので、積極的に活用しましょう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?