というケースがあるかもしれません。
僕の場合は、検証のために一時的に環境変数を書き換えたい (AWS のクレデンシャルを変えたいとか) 場合などがありました。
Docker Compose はデフォルトでは、docker-compose.yml
と docker-compose.override.yml
という2つのファイルを読み込むようになっています。
ここでさらに -f
オプションを使うと、任意の名前の Compose ファイルを読み込ませることが可能です。
- Share Compose configurations between files and projects | Docker Documentation
- サービスの拡張と Compose ファイル — Docker-docs-ja 17.06.Beta ドキュメント
これを使えば、ローカルでだけ設定を上書きすることができそうです。
ためしに任意の名前の 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
ただし、ports
や external_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 を使いすぎると「チームの中で自分の環境だけがおかしい」が起こりやすくなるので、なるべく使わないのが無難です。