技術ブログ

(技術系中心)基本自分用備忘録なので、あくまで参考程度でお願いします。

Docker環境をオーバーライドする方法(Doocker-compose.override.yml)

Docker環境をオーバーライドする方法

Composeファイルを複数利用したいケースがあります。

例えば、異なる環境、異なる作業フローに合わせてカスタマイズするケースなどです。

その時によく利用するのがDoocker-compose.override.ymlファイルを利用する方法です。

前提知識

デフォルトにおいてComposeは2つのファイルを読み込みます。

1. docker-compose.yml
2. docker-compose.override.yml

docker-compose.yml には基本的な設定を含めます。こちらはよく利用するので既に何と無くイメージがつかめると思います。

docker-compose.override.yml ファイルは、オーバーライドという表現が含まれていることから分かるように、既存のサービスあるいは新たに起動する全サービスに対しての上書き設定を行うものです。

利用例

docker-compose.override.ymlが利用されるよくあるケースで、開発環境向けのComposeアプリを各環境で切り替えたい場合です。

例えば、本番環境と開発環境のポート番号を変えたいとかです。

■ docker-compose.yml

web:
  image: example/my_web_app:latest
  links:
    - db
    - cache

db:
  image: postgres:latest

cache:
  image: redis:latest

上記のようにdocker-compose.ymlに基本設定を記載します。

この基本設定にオーバーライドしたい内容をdocker-compose.override.ymlに記載します。

■ docker-compose.yml

web:
  build: .
  volumes:
    - '.:/code'
  ports:
    - 8883:80
  environment:
    DEBUG: 'true'

db:
  command: '-d'
  ports:
    - 5432:5432

cache:
  ports:
    - 6379:6379

docker-compose upを実行すると、上書き用の設定ファイルが自動的に読み込まれます。

参考

docs.docker.jp