| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- version: '3.8'
- services:
- # MySQL 数据库服务
- mysql:
- image: mysql:8.0
- container_name: license-admin-mysql
- environment:
- MYSQL_ROOT_PASSWORD: ${DB_PASSWORD:-password}
- MYSQL_DATABASE: ${DB_NAME:-license_admin}
- MYSQL_USER: ${DB_USER:-license_user}
- MYSQL_PASSWORD: ${DB_PASSWORD:-password}
- ports:
- - "${DB_PORT:-3306}:3306"
- volumes:
- # 持久化 MySQL 数据
- - mysql_data:/var/lib/mysql
- # 初始化 SQL 脚本
- - ./database/init.sql:/docker-entrypoint-initdb.d/init.sql:ro
- restart: unless-stopped
- command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
- healthcheck:
- test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p$$MYSQL_ROOT_PASSWORD"]
- interval: 10s
- timeout: 5s
- retries: 5
- networks:
- - license-admin-network
- # License Admin 应用服务
- license-admin:
- build:
- context: .
- dockerfile: Dockerfile
- platforms:
- - linux/amd64
- image: license-admin:latest
- container_name: license-admin
- ports:
- - "8080:8080"
- environment:
- # 认证 Token,生产环境请修改
- - AUTH_TOKEN=${AUTH_TOKEN:-admin-token-123456}
- # 端口配置
- - PORT=8080
- # MySQL 数据库配置
- - DB_HOST=mysql
- - DB_PORT=3306
- - DB_USER=${DB_USER:-root}
- - DB_PASSWORD=${DB_PASSWORD:-password}
- - DB_NAME=${DB_NAME:-license_admin}
- depends_on:
- mysql:
- condition: service_healthy
- restart: unless-stopped
- healthcheck:
- test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8080/health"]
- interval: 30s
- timeout: 3s
- retries: 3
- start_period: 10s
- networks:
- - license-admin-network
- volumes:
- mysql_data:
- driver: local
- networks:
- license-admin-network:
- driver: bridge
|