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
を実行すると、上書き用の設定ファイルが自動的に読み込まれます。