功能特性: - 用户端充值记录页面,从使用日志中分离 - 充值记录中的去开发票功能 - 管理员发票管理页面 - 发票申请、处理、邮件通知功能 - 侧边栏菜单更新 - UI优化和控制台清理 - Docker部署配置 - 生产环境安全配置
101 lines
2.9 KiB
YAML
101 lines
2.9 KiB
YAML
version: '3.4'
|
|
|
|
services:
|
|
new-api:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
container_name: new-api-prod
|
|
restart: always
|
|
command: --log-dir /app/logs
|
|
ports:
|
|
- "3000:3000"
|
|
volumes:
|
|
- ./data:/data
|
|
- ./logs:/app/logs
|
|
environment:
|
|
# 生产环境数据库配置 - 使用环境变量
|
|
- SQL_DSN=${MYSQL_USER:-newapi_user}:${MYSQL_PASSWORD}@tcp(mysql:3306)/${MYSQL_DATABASE:-new_api}
|
|
- REDIS_CONN_STRING=redis://:${REDIS_PASSWORD}@redis:6379
|
|
- TZ=Asia/Shanghai
|
|
- ERROR_LOG_ENABLED=true
|
|
- STREAMING_TIMEOUT=120
|
|
# 生产环境必须设置的安全配置
|
|
- SESSION_SECRET=${SESSION_SECRET} # 必须设置!多机部署时的会话密钥
|
|
# 可选配置
|
|
# - NODE_TYPE=slave # 多节点部署时取消注释
|
|
# - SYNC_FREQUENCY=60 # 需要定期数据库同步时取消注释
|
|
# - FRONTEND_BASE_URL=${FRONTEND_BASE_URL} # 多节点部署时的前端URL
|
|
|
|
depends_on:
|
|
mysql:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_started
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "wget -q -O - http://localhost:3000/api/status | grep -o '\"success\":\\s*true' | awk -F: '{print $$2}'"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 5
|
|
start_period: 60s
|
|
|
|
redis:
|
|
image: redis:7-alpine
|
|
container_name: redis-prod
|
|
restart: always
|
|
command: redis-server --requirepass ${REDIS_PASSWORD} --appendonly yes
|
|
volumes:
|
|
- redis_data:/data
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "--raw", "incr", "ping"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
# 生产环境不暴露Redis端口
|
|
# ports:
|
|
# - "6379:6379"
|
|
|
|
mysql:
|
|
image: mysql:8.2
|
|
container_name: mysql-prod
|
|
restart: always
|
|
environment:
|
|
# 生产环境MySQL配置
|
|
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
|
|
MYSQL_DATABASE: ${MYSQL_DATABASE:-new_api}
|
|
MYSQL_USER: ${MYSQL_USER:-newapi_user}
|
|
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
|
# MySQL性能优化配置
|
|
MYSQL_INNODB_BUFFER_POOL_SIZE: 256M
|
|
MYSQL_INNODB_LOG_FILE_SIZE: 64M
|
|
MYSQL_MAX_CONNECTIONS: 200
|
|
volumes:
|
|
- mysql_data:/var/lib/mysql
|
|
- ./mysql-init:/docker-entrypoint-initdb.d # 初始化脚本目录
|
|
command: >
|
|
--default-authentication-plugin=mysql_native_password
|
|
--innodb-buffer-pool-size=256M
|
|
--innodb-log-file-size=64M
|
|
--max-connections=200
|
|
--character-set-server=utf8mb4
|
|
--collation-server=utf8mb4_unicode_ci
|
|
healthcheck:
|
|
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_ROOT_PASSWORD}"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 5
|
|
start_period: 60s
|
|
# 生产环境不暴露MySQL端口
|
|
# ports:
|
|
# - "3306:3306"
|
|
|
|
volumes:
|
|
mysql_data:
|
|
driver: local
|
|
redis_data:
|
|
driver: local
|
|
|
|
networks:
|
|
default:
|
|
name: newapi-prod-network
|