LoginSignup
20
11

More than 5 years have passed since last update.

チームの docker-compose.yml をローカルでだけ上書きしたい

Last updated at Posted at 2018-02-15

というケースがあるかもしれません。
僕の場合は、検証のために一時的に環境変数を書き換えたい (AWS のクレデンシャルを変えたいとか) 場合などがありました。

Docker Compose はデフォルトでは、docker-compose.ymldocker-compose.override.yml という2つのファイルを読み込むようになっています。
ここでさらに -f オプションを使うと、任意の名前の Compose ファイルを読み込ませることが可能です。

これを使えば、ローカルでだけ設定を上書きすることができそうです。
ためしに任意の名前の Compose ファイルを作る方法で対応してみます。


# docker-compose.yml

version: '2'
services:
  app:
    build: ./docker/app/
    environment:
      RAILS_ENV: development
      AWS_ACCESS_KEY_ID: xxxxx
      AWS_SECRET_ACCESS_KEY: xxxxx
# ...(以下省略)...
# docker-compose.local.yml

services:
  app:
    environment:
      AWS_ACCESS_KEY_ID: yyyyy
      AWS_SECRET_ACCESS_KEY: yyyyy

AWS のクレデンシャルを上書きしてみました。
-f オプションをつけて docker-compose up すれば OK です。

$ docker-compose -f docker-compose.yml -f docker-compose.local.yml up -d

ただし、portsexternal_links のような複数の値を持つ設定は両方の値を連結するため、上書きにはなりません。

おまけ: ローカル用の設定を Git に入れたくない場合

ローカル用の Compose ファイル名を決めておき .gitignore ファイルに入れておくのが良いですが、様々な理由により .gitignore ファイルに入れたくないケースがあるかもしれません。
その場合は .git/info/exclude ファイルに書くことができます。

ドキュメンテーションされているとおりですが、gitignore は以下のファイルから除外するファイル・ディレクトリを決定します。

  • .gitignore ファイル
  • .git/info/exclude ファイル
  • core.excludesFile に定義されたファイル
    • $ git config --get core.excludesFile で確認できます。~/.gitignore とか ~/.gitignore_global とかになっていることが多い気がします

ただし .git/info/exclude を使いすぎると「チームの中で自分の環境だけがおかしい」が起こりやすくなるので、なるべく使わないのが無難です。

20
11
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
20
11