docker-compose.yml
1.06 KB
services:
mysql:
image: mysql:8.4
ports:
- "${MYSQL_PORT:-3306}:3306"
# 口令没有默认值:容器口令必须和代码里连库用的口令是同一个来源,否则起来的库谁也连不上。
# 唯一入口是 `pnpm mysql:up`(tools/scripts/mysql-dev.js),它从 @drama/db 的 devMysqlUrl()
# 解析出口令注进来。直接 `docker compose up mysql` 会明确报缺变量,而不是悄悄起一个错口令的库。
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:?run `pnpm mysql:up` instead of `docker compose up mysql`}
MYSQL_DATABASE: ${MYSQL_DATABASE:?run `pnpm mysql:up` instead of `docker compose up mysql`}
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
volumes:
- mysql-data:/var/lib/mysql
- ./docker/mysql/init:/docker-entrypoint-initdb.d:ro
healthcheck:
test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -uroot -p$${MYSQL_ROOT_PASSWORD} --silent"]
interval: 5s
timeout: 3s
retries: 30
volumes:
mysql-data: