🤖

【Docker】環境別でのdockerファイルをdocker-compose.ymlで管理する

2023/02/23に公開

概要

システムサービスを提供する上で、dev / stg / prodと異なる環境が存在する。また、それぞれの環境において、php / redis / laravelといった異なるサービスを提供している。その際、それぞれに対してdockerファイルを作成する必要があるため、例えば上記ケースだと単純に3 x 3のファイルが存在する。これら複数のコンテナを管理するために存在するのが、docker-composeファイルである。docker-composeファイルを使用しアプリケーションを定義することで、異なる環境を簡易的に管理できる。

なぜdocker-composeファイルが必要か

dockerに詳しくない人でも、dev / stg / prodにデプロイできるように、プロセスを簡素化するためである。docker詳しくない人だと、dockerファイルだけあって、それらをまとめるdocker-compose.ymlファイルがなければ、どうやってどの環境に対しデプロイできるかわからない。Readmeで書くのも一つの手だが、docker-compose.ymlがあった方が総じて楽。

どのように環境を切り分けるか

では、開発環境と本番環境での設定を切り分けるケースを見てみよう環境の切り分けをするには、別々のdocker-composeファイルを作成する必要がある。そのため、開発環境用のdocker-compose.env.ymlと本番用のdocker-compose.prod.ymlファイルの二つが必要となる。

例えば、開発環境のdocker-compose.ymlファイルは下記の通り。

version: "3"
services:
  app:
    build: .
    ports:
      - "5000:5000"
    environment:
      FLASK_ENV: development

本番環境用のdocker-compose.prod.ymlファイルは、下記の通り。こちらには、本番運用するためのセキュリティや信頼性に関する設定が含まれる。

version: "3"
services:
  app:
    image: my_app
    ports:
      - "80:80"
    environment:
      FLASK_ENV: production
    networks:
      - webnet

networks:
  webnet:

引用

https://docs.docker.jp/compose/production.html
https://techtechmedia.com/docker-compose-dev-prod/

Discussion