🍁
docker-composeで環境を分ける
docker-composeで開発・本番等を環境ごと分けるやり方で、
現状自分が一番いいと思っている方法を記載します。
しかし、ディレクトリを2つ作ることになるので、あまり良い方法ではないかもしれないです。
同じコンテナ内でdockerコマンドを用いて2つのコンテナを作る方法がいいかもしれないので、
そこら辺も今後の課題として勉強いたします👍
本番環境用の環境を作成する
まずは/production
ディレクトリを作成し、以下のファイルを生成します。
- ini:.env
- docker-compose.yml
次に各々のファイルを下記のように記載します。
.env
DOCKER_ENV=production
APP_PORT=8000
DB_PORT=6543
DB_DATABASE=sample
DB_USERNAME=sample
DB_PASSWORD=sample
docker-compose.yml
version: '3.7'
volumes:
db-data:
services:
app:
container_name: app_${DOCKER_ENV}
image: php:7.3.29-apache
ports:
- ${APP_PORT}:80
volumes:
- ./app:/var/www/html
depends_on:
- db
db:
container_name: bianchi-backend_postgres_${DOCKER_ENV}
image: postgres:12-alpine
ports:
- ${DB_PORT}:5432
environment:
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_DB: ${DB_DATABASE}
POSTGRES_INITDB_ARGS: "--encoding=UTF-8"
TZ: Asia/Tokyo
hostname: postgres
volumes:
- db-data:/var/lib/postgresql/data
${.env}で設定したキー
とdocker-compose.ymlに記載することで、
簡単に環境変数を呼び出すことができます。
開発環境用の環境を作成する
次に/develop
ディレクトリを作成し、同じように以下のファイルを生成します。
- ini:.env
- docker-compose.yml
先ほどと同じように各々のファイルを下記のように記載します。
.env
DOCKER_ENV=development
APP_PORT=8787
DB_PORT=9876
DB_DATABASE=sample
DB_USERNAME=sample
DB_PASSWORD=sample
docker-compose.yml
version: '3.7'
volumes:
db-data:
services:
app:
container_name: app_${DOCKER_ENV}
image: php:7.3.29-apache
ports:
- ${APP_PORT}:80
volumes:
- ./app:/var/www/html
depends_on:
- db
db:
container_name: bianchi-backend_postgres_${DOCKER_ENV}
image: postgres:12-alpine
ports:
- ${DB_PORT}:5432
environment:
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_DB: ${DB_DATABASE}
POSTGRES_INITDB_ARGS: "--encoding=UTF-8"
TZ: Asia/Tokyo
hostname: postgres
volumes:
- db-data:/var/lib/postgresql/data
Discussion