zukucode
主にWEB関連の情報を技術メモとして発信しています。

docker-compose.ymlの設定を開発環境と本番環境で切り替える

docker-compose.ymlの設定を開発環境と本番環境で切り替える方法を紹介します。

例えば以下のような構成でコンテナを実行しているとします。

docker-compose.yml
version: '3'
services:
  web:
    image: nginx
    ports: 
      - 80:80
  node:
    image: node
    ports: 
      - 3000:3000

nodeコンテナは本番環境で使用したくない場合、以下のようにdocker-compose.dev.ymlのように、開発時専用のdocker-compose.ymlを作成します。

docker-compose.yml
version: '3'
services:
  web:
    image: nginx
    ports: 
      - 80:80
  node:
    image: node
    ports: 
      - 3000:3000
docker-compose.dev.yml
version: '3'
services:
  node:
    image: node
    ports: 
      - 3000:3000

コンテナを起動するときのコマンドの-fオプションで、読み込むdocker-compose.ymlを指定します。

$ docker-compose -f docker-compose.yml -f docker-compose.dev.yml build
$ docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d

これにより、複数のdocker-compose.ymlを読み込むことができます。

あとに記載した内容が先の設定ファイルにマージされていきます。

以下のようにして環境によって読み込むファイルを切り替えることにより、環境に応じたコンテナを起動できるようになります。

$ docker-compose -f docker-compose.yml -f docker-compose.dev.yml up #開発環境
$ docker-compose up #本番環境

例えば、本番環境ではポートを80で使用するが、開発環境では別のポート(8080など)を使用したい場合など、ポートを切り替えたい場合は上記の設定ではうまく行きません。

ポートを切り替える方法はdocker-compose.ymlでポートを開発環境と本番環境で切り替えるで紹介しています。


関連記事