というケースがあるかもしれません。
僕の場合は、検証のために一時的に環境変数を書き換えたい (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 を使いすぎると「チームの中で自分の環境だけがおかしい」が起こりやすくなるので、なるべく使わないのが無難です。
