PayrollManagementSystem/docker/docker-compose.dev.yml

58 lines
1.9 KiB
YAML
Raw Normal View History

# 开发环境容器编排
# 启动(在项目根目录执行;Compose 会自动加载同目录的 docker/.env):
# docker compose -f docker/docker-compose.dev.yml up -d
#
# name 显式指定 Compose 项目名。不指定时会取 compose 文件所在目录名(即 docker),
# 导致网络/卷被命名为 docker_default、docker_mysql-dev-data 这类无意义名称。
name: ys-payroll
services:
mysql:
image: mysql:8.0
container_name: ys-mysql-dev
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
# 应用连接用专用账号,避免后端以 root 身份连库
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
TZ: Asia/Shanghai
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
volumes:
- mysql-dev-data:/var/lib/mysql
# 首次启动自动执行 db/init 下的初始化脚本
- ../db/init:/docker-entrypoint-initdb.d
ports:
- "127.0.0.1:3306:3306"
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-p${MYSQL_ROOT_PASSWORD}"]
interval: 10s
timeout: 5s
retries: 10
start_period: 30s
redis:
image: redis:7-alpine
container_name: ys-redis-dev
restart: unless-stopped
environment:
TZ: Asia/Shanghai
# 健康检查脚本在容器内展开(密码不进宿主进程命令行,模式同 mysql)
REDIS_PASSWORD: ${REDIS_PASSWORD}
# appendonly 开启 AOF,容器重启后验证码黑名单等数据不丢
command: redis-server --appendonly yes --requirepass ${REDIS_PASSWORD}
volumes:
- redis-dev-data:/data
ports:
- "127.0.0.1:6379:6379"
healthcheck:
test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD}", "--no-auth-warning", "ping"]
interval: 10s
timeout: 5s
retries: 10
volumes:
mysql-dev-data:
redis-dev-data: