231 lines
6.6 KiB
YAML
231 lines
6.6 KiB
YAML
# LJWX 生产环境 Docker Compose 配置 v2.0
|
|
# 使用统一.env配置文件管理所有变量
|
|
version: '3.8'
|
|
|
|
networks:
|
|
ljwx-network:
|
|
driver: bridge
|
|
name: ${NETWORK_NAME:-ljwx-network}
|
|
|
|
volumes:
|
|
mysql_data:
|
|
driver: local
|
|
name: ${MYSQL_VOLUME:-mysql_data}
|
|
redis_data:
|
|
driver: local
|
|
name: ${REDIS_VOLUME:-redis_data}
|
|
|
|
services:
|
|
# ============================================
|
|
# 基础设施服务
|
|
# ============================================
|
|
|
|
# MySQL数据库
|
|
ljwx-mysql:
|
|
image: ${REGISTRY}/ljwx-mysql:${LJWX_MYSQL_VERSION}
|
|
container_name: ljwx-mysql
|
|
environment:
|
|
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
|
|
- MYSQL_DATABASE=${MYSQL_DATABASE}
|
|
- MYSQL_USER=${MYSQL_USER}
|
|
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
|
|
- TZ=${TZ:-Asia/Shanghai}
|
|
# 数据库迁移配置
|
|
- DB_MIGRATION_ENABLED=${DB_MIGRATION_ENABLED:-true}
|
|
- DB_MIGRATION_AUTO_APPLY=${DB_MIGRATION_AUTO_APPLY:-true}
|
|
volumes:
|
|
- mysql_data:/var/lib/mysql
|
|
# 挂载迁移脚本目录(用于动态迁移)
|
|
- ${DB_MIGRATION_DIR:-./docker/mysql/migrations}:/docker-migrations:ro
|
|
ports:
|
|
- "${MYSQL_PORT:-3307}:3306"
|
|
networks:
|
|
- ljwx-network
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_ROOT_PASSWORD}"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
start_period: 30s
|
|
|
|
# Redis缓存
|
|
ljwx-redis:
|
|
image: ${REGISTRY}/ljwx-redis:${LJWX_REDIS_VERSION}
|
|
container_name: ljwx-redis
|
|
command: redis-server --requirepass ${REDIS_PASSWORD}
|
|
environment:
|
|
- TZ=${TZ:-Asia/Shanghai}
|
|
volumes:
|
|
- redis_data:/data
|
|
ports:
|
|
- "${REDIS_PORT}:6379"
|
|
networks:
|
|
- ljwx-network
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD}", "ping"]
|
|
interval: 10s
|
|
timeout: 3s
|
|
retries: 5
|
|
start_period: 10s
|
|
|
|
# ============================================
|
|
# 业务应用服务
|
|
# ============================================
|
|
|
|
# 后端服务 - ljwx-boot
|
|
ljwx-boot:
|
|
image: ${REGISTRY}/ljwx-boot:${LJWX_BOOT_VERSION}
|
|
container_name: ljwx-boot
|
|
environment:
|
|
# JVM 配置
|
|
- JAVA_OPTS=${BOOT_JVM_OPTS:--Xms512m -Xmx1g -XX:+UseG1GC}
|
|
|
|
# Spring Boot 配置
|
|
- SPRING_PROFILES_ACTIVE=${SPRING_PROFILES_ACTIVE:-prod}
|
|
|
|
# 数据库配置
|
|
- SPRING_DATASOURCE_URL=jdbc:mysql://ljwx-mysql:3306/${MYSQL_DATABASE}?useUnicode=true&characterEncoding=utf8&serverTimezone=${TZ:-Asia/Shanghai}&useSSL=false&allowPublicKeyRetrieval=true&autoReconnect=true&failOverReadOnly=false&maxReconnects=3&initialTimeout=2&connectTimeout=60000&socketTimeout=60000
|
|
- SPRING_DATASOURCE_USERNAME=${MYSQL_USER}
|
|
- SPRING_DATASOURCE_PASSWORD=${MYSQL_PASSWORD}
|
|
- SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.cj.jdbc.Driver
|
|
|
|
# Redis 配置
|
|
- REDIS_HOST=${REDIS_HOST:-ljwx-redis}
|
|
- REDIS_PORT=${REDIS_PORT:-6379}
|
|
- REDIS_PASSWORD=${REDIS_PASSWORD}
|
|
- REDIS_DB=${REDIS_DB:-0}
|
|
- SPRING_REDIS_HOST=${REDIS_HOST:-ljwx-redis}
|
|
- SPRING_REDIS_PORT=${REDIS_PORT:-6379}
|
|
- SPRING_REDIS_PASSWORD=${REDIS_PASSWORD}
|
|
|
|
# 时区配置
|
|
- TZ=${TZ:-Asia/Shanghai}
|
|
ports:
|
|
- "${BOOT_PORT:-9998}:9998"
|
|
depends_on:
|
|
ljwx-mysql:
|
|
condition: service_healthy
|
|
ljwx-redis:
|
|
condition: service_healthy
|
|
networks:
|
|
- ljwx-network
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "netstat -an | grep 9998 || exit 1"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 120s
|
|
|
|
# 大屏服务 - ljwx-bigscreen
|
|
ljwx-bigscreen:
|
|
image: ${REGISTRY}/ljwx-bigscreen:${LJWX_BIGSCREEN_VERSION}
|
|
container_name: ljwx-bigscreen
|
|
environment:
|
|
# 数据库配置
|
|
- MYSQL_HOST=ljwx-mysql
|
|
- MYSQL_PORT=3306
|
|
- MYSQL_DATABASE=${MYSQL_DATABASE}
|
|
- MYSQL_USER=${MYSQL_USER}
|
|
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
|
|
|
|
# Redis 配置
|
|
- REDIS_HOST=${REDIS_HOST:-ljwx-redis}
|
|
- REDIS_PORT=${REDIS_PORT:-6379}
|
|
- REDIS_PASSWORD=${REDIS_PASSWORD}
|
|
|
|
# 后端API配置
|
|
- API_BASE_URL=http://ljwx-boot:9998
|
|
- BACKEND_URL=http://ljwx-boot:9998
|
|
|
|
# 时区配置
|
|
- TZ=${TZ:-Asia/Shanghai}
|
|
ports:
|
|
- "${BIGSCREEN_EXTERNAL_PORT:-8000}:${BIGSCREEN_PORT:-5225}"
|
|
depends_on:
|
|
ljwx-mysql:
|
|
condition: service_healthy
|
|
ljwx-boot:
|
|
condition: service_healthy
|
|
ljwx-redis:
|
|
condition: service_healthy
|
|
networks:
|
|
- ljwx-network
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "netstat -an | grep ${BIGSCREEN_PORT:-5225} || exit 1"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 60s
|
|
|
|
# 前端管理界面 - ljwx-admin
|
|
ljwx-admin:
|
|
image: ${REGISTRY}/ljwx-admin:${LJWX_ADMIN_VERSION}
|
|
container_name: ljwx-admin
|
|
environment:
|
|
- API_BASE_URL=http://ljwx-boot:9998
|
|
- TZ=${TZ:-Asia/Shanghai}
|
|
ports:
|
|
- "${ADMIN_EXTERNAL_PORT:-8080}:${ADMIN_PORT:-80}"
|
|
depends_on:
|
|
ljwx-boot:
|
|
condition: service_healthy
|
|
networks:
|
|
- ljwx-network
|
|
restart: unless-stopped
|
|
|
|
# ============================================
|
|
# 使用说明
|
|
# ============================================
|
|
#
|
|
# 配置文件:
|
|
# - 统一配置文件: .env
|
|
# - 从模板创建: cp .env.unified .env
|
|
# - 修改版本号、密码等配置
|
|
#
|
|
# 构建镜像:
|
|
# ./build-and-push.sh -b
|
|
#
|
|
# 推送镜像:
|
|
# ./build-and-push.sh -p
|
|
#
|
|
# 部署服务:
|
|
# ./build-and-push.sh -d
|
|
# 或
|
|
# docker-compose -f docker-compose.prod.v2.yml up -d
|
|
#
|
|
# 一键完成:
|
|
# ./build-and-push.sh -a
|
|
#
|
|
# 查看服务:
|
|
# docker-compose -f docker-compose.prod.v2.yml ps
|
|
# docker-compose -f docker-compose.prod.v2.yml logs -f [service-name]
|
|
#
|
|
# 停止服务:
|
|
# docker-compose -f docker-compose.prod.v2.yml down
|
|
#
|
|
# 数据库迁移:
|
|
# ./db-migrate.sh export # 导出基线
|
|
# ./db-migrate.sh status # 查看状态
|
|
# ./db-migrate.sh apply-all # 应用迁移
|
|
#
|
|
# ============================================
|
|
# 服务访问地址
|
|
# ============================================
|
|
#
|
|
# 业务应用:
|
|
# - 后端API: http://localhost:${BOOT_PORT:-9998}
|
|
# - 管理界面: http://localhost:${ADMIN_EXTERNAL_PORT:-8080}
|
|
# - 大屏服务: http://localhost:${BIGSCREEN_EXTERNAL_PORT:-8000}
|
|
#
|
|
# 基础设施:
|
|
# - MySQL: localhost:${MYSQL_PORT:-3307} (${MYSQL_USER}/${MYSQL_PASSWORD})
|
|
# - Redis: localhost:${REDIS_PORT:-6379} (password: ${REDIS_PASSWORD})
|
|
#
|
|
# 健康检查:
|
|
# - Boot: http://localhost:${BOOT_PORT:-9998}/actuator/health
|
|
#
|