Tech Racho エンジニアの「?」を「!」に。
  • IT Tips

docker-composeには-f オプションを複数渡せる

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で都度確認してください。

おたより発掘


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。