Webチームの社内勉強会より抜粋しました。
実はdocker-composeの-f
オプションを複数渡せる
docker-compose -f docker-compose.yml -f second-compose.yml build
のように指定すると、以下のようにdocker-compose.ymlとsecond-compose.ymlの設定がいい感じにマージされます。
# docker-compose.yml
version: "3"
services:
web:
volumes:
- ./mysite.template:/etc/nginx/conf.d/mysite.template
- ./nginx.conf:/etc/nginx/nginx.conf:ro
ports:
- "8080:80"
- "8888:443"
image: nginx
environment:
- NGINX_HOST=foobar.com
# second-compose.yml
version: "3"
services:
web:
volumes:
- ./hugahoge.template:/etc/nginx/conf.d/mysite.template
- ./nginx.conf:/etc/nginx/default.conf:ro
ports:
- "3000:80"
- "8888:1025"
environment:
- NGINX_HOST=fugahoge.com
config
を指定すると、マージの結果を確認できます。
$ docker-compose -f docker-compose.yml -f second-compose.yml config
services:
web:
environment:
NGINX_HOST: fugahoge.com
image: nginx
ports:
- 8080:80/tcp
- 3000:80/tcp
- 8888:443/tcp
- 8888:1025/tcp
volumes:
- /Users/gen/dev/dctest/hugahoge.template:/etc/nginx/conf.d/mysite.template:rw
- /Users/gen/dev/dctest/nginx.conf:/etc/nginx/default.conf:ro
- /Users/gen/dev/dctest/nginx.conf:/etc/nginx/nginx.conf:ro
基本的に後から読み込んだ設定が勝ちますが、項目によって上書きされるかどうかが違うようなのでconfig
で都度確認してください。
おたより発掘
そんなことできたんだ?
オプショナルなミドルウェアとか開発ツール類を分けておいたら便利だろうか“docker-composeには-f オプションを複数渡せる|TechRacho(テックラッチョ)〜エンジニアの「?」を「!」に〜|BPS株式会社” https://t.co/9htrWtja4Z
— ゆーき (@yukithm) May 7, 2020