Files
license-manager/docker-compose.yml
T
2025-08-09 23:32:05 +08:00

91 lines
2.2 KiB
YAML

version: '3.8'
services:
# MySQL 8数据库
mysql:
image: mysql:8.0
container_name: license-manager-mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: root@123
MYSQL_DATABASE: license_manager
MYSQL_USER: license_user
MYSQL_PASSWORD: license@123
TZ: Asia/Shanghai
ports:
- "13306:3306"
volumes:
- mysql_data:/var/lib/mysql
command: >
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
--sql_mode=STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO
--max_connections=1000
--innodb_buffer_pool_size=256M
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 30s
timeout: 10s
retries: 5
start_period: 30s
networks:
- license-manager-network
# 后端服务
backend:
build:
context: .
dockerfile: Dockerfile.backend
container_name: license-manager-backend
restart: unless-stopped
environment:
- TZ=Asia/Shanghai
ports:
- "18888:18888"
volumes:
- ./backend/configs:/app/backend/configs
- ./logs:/app/logs
- ./backend/configs/config.dev.yaml:/app/backend/cmd/config.yaml:ro
depends_on:
mysql:
condition: service_healthy
healthcheck:
test: ["CMD-SHELL", "curl -fsS http://localhost:18888/health || exit 1"]
interval: 10s
timeout: 10s
retries: 6
start_period: 60s
networks:
- license-manager-network
# 前端服务
frontend:
build:
context: .
dockerfile: Dockerfile.frontend
container_name: license-manager-frontend
restart: unless-stopped
environment:
- TZ=Asia/Shanghai
ports:
- "18080:80"
depends_on:
backend:
condition: service_healthy
healthcheck:
test: ["CMD-SHELL", "curl -fsS http://localhost/ || exit 1"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
networks:
- license-manager-network
volumes:
mysql_data:
driver: local
networks:
license-manager-network:
driver: bridge