はじめに
本記事は、プログラミング初学者が学習を進めていて疑問に思った点について調べた結果を備忘録も兼ねてまとめたものです。
そのため、記事の内容に誤りが含まれている可能性があります。ご容赦ください。
間違いを見つけた方は、お手数ですが、ご指摘いただけますと幸いです。
Extension fieldsを使用してdocker-compose.yml内で値を使い回す
以下のように記述することでdocker-compose.yml内で値を使い回すことができます。
docker-compose.yml
version: '3.9'
x-db-env: &db-env
MYSQL_ROOT_PASSWORD : rootpassword
MYSQL_DATABASE: myapp_development
MYSQL_TEST_DATABASE: myapp_test
MYSQL_USER: user
MYSQL_PASSWORD: userpassword
x-pulic-data-driver_ops: &public-driver_opts
type: none
device: ${PWD}/public
o: bind
x-tmp-data-driver_ops: &tmp-data-driver_ops
<<: *public-driver_opts
device: ${PWD}/tmp
services:
db:
platform: linux/x86_64
build: ./docker/db
command:
--default-authentication-plugin=mysql_native_password &&
bash -c "chmod +x /docker-entrypoint-initdb.d/00_grant.sh"
healthcheck:
test: mysqladmin ping -h db -u$${MYSQL_USER} -p$${MYSQL_PASSWORD}
interval: 1s
restart: on-failure
volumes:
- mysql_data:/var/lib/mysql
- type: bind
source: ./docker/db/my.cnf
target: /etc/mysql/conf.d/my.cnf
- type: bind
source: ./docker/db/
target: /docker-entrypoint-initdb.d
environment: *db-env
ports:
- "3306:3306"
web:
build: ./docker/web
volumes:
- public-data:/myapp/public
- tmp-data:/myapp/tmp
ports:
- 80:80
depends_on:
- api
api:
<省略>
volumes:
mysql_data:
public-data:
driver_opts: *public-driver_opts
tmp-data:
driver_opts: *tmp-data-driver_ops