chore(docker): move root docker-compose files into wwjcloud-nest/docker for unified docker testing with admin and backend
This commit is contained in:
180
docker/docker-compose.yml
Normal file
180
docker/docker-compose.yml
Normal file
@@ -0,0 +1,180 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
# ========================================
|
||||
# MySQL 数据库
|
||||
# ========================================
|
||||
mysql:
|
||||
image: mysql:8.0
|
||||
container_name: wwjcloud-mysql
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: root123456
|
||||
MYSQL_DATABASE: wwjcloud
|
||||
MYSQL_USER: wwjcloud
|
||||
MYSQL_PASSWORD: wwjcloud123
|
||||
TZ: Asia/Shanghai
|
||||
ports:
|
||||
- "3306:3306"
|
||||
volumes:
|
||||
- mysql_data:/var/lib/mysql
|
||||
- ./sql:/docker-entrypoint-initdb.d
|
||||
command:
|
||||
- --character-set-server=utf8mb4
|
||||
- --collation-server=utf8mb4_unicode_ci
|
||||
- --default-authentication-plugin=mysql_native_password
|
||||
healthcheck:
|
||||
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-proot123456"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
networks:
|
||||
- wwjcloud-network
|
||||
|
||||
# ========================================
|
||||
# Redis 缓存
|
||||
# ========================================
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
container_name: wwjcloud-redis
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "6379:6379"
|
||||
volumes:
|
||||
- redis_data:/data
|
||||
command: redis-server --appendonly yes --requirepass redis123456
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "-a", "redis123456", "ping"]
|
||||
interval: 10s
|
||||
timeout: 3s
|
||||
retries: 5
|
||||
networks:
|
||||
- wwjcloud-network
|
||||
|
||||
# ========================================
|
||||
# NestJS 后端服务
|
||||
# ========================================
|
||||
nestjs-backend:
|
||||
build:
|
||||
context: ./wwjcloud-nest
|
||||
dockerfile: Dockerfile
|
||||
container_name: wwjcloud-nestjs
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "3000:3000"
|
||||
environment:
|
||||
NODE_ENV: production
|
||||
# App配置
|
||||
APP_NAME: wwjcloud
|
||||
APP_VERSION: 1.0.0
|
||||
APP_PORT: 3000
|
||||
APP_ENVIRONMENT: production
|
||||
APP_TIMEZONE: Asia/Shanghai
|
||||
APP_KEY: wwjcloud-super-secret-key-2024
|
||||
APP_DEFAULT_LANGUAGE: zh_CN
|
||||
APP_SUPPORTED_LOCALES: zh_CN,en_US
|
||||
# 数据库配置
|
||||
DB_HOST: mysql
|
||||
DB_PORT: 3306
|
||||
DB_USERNAME: wwjcloud
|
||||
DB_PASSWORD: wwjcloud123
|
||||
DB_DATABASE: wwjcloud
|
||||
DB_SYNC: false
|
||||
DB_LOGGING: false
|
||||
DB_CONN_LIMIT: 10
|
||||
DB_ACQUIRE_TIMEOUT_MS: 60000
|
||||
DB_QUERY_TIMEOUT_MS: 60000
|
||||
DB_CACHE_DURATION_MS: 300000
|
||||
DB_TIMEZONE: +08:00
|
||||
DB_CHARSET: utf8mb4
|
||||
# Redis配置
|
||||
REDIS_HOST: redis
|
||||
REDIS_PORT: 6379
|
||||
REDIS_PASSWORD: redis123456
|
||||
REDIS_DB: 0
|
||||
REDIS_KEY_PREFIX: "wwjcloud:"
|
||||
# JWT配置
|
||||
JWT_SECRET: your-super-secret-jwt-key-change-in-production-32-chars
|
||||
JWT_EXPIRES_IN: 7d
|
||||
JWT_ALGORITHM: HS256
|
||||
# Kafka配置
|
||||
KAFKA_CLIENT_ID: wwjcloud-nestjs
|
||||
KAFKA_BROKERS: kafka:9092
|
||||
KAFKA_GROUP_ID: wwjcloud-group
|
||||
KAFKA_TOPIC_PREFIX: wwjcloud
|
||||
# 缓存配置
|
||||
CACHE_TTL: 3600
|
||||
CACHE_MAX_ITEMS: 1000
|
||||
CACHE_PREFIX: "cache:"
|
||||
# 日志配置
|
||||
LOG_LEVEL: info
|
||||
LOG_FORMAT: json
|
||||
# 上传配置
|
||||
UPLOAD_PATH: /app/uploads
|
||||
UPLOAD_MAX_SIZE: 10485760
|
||||
UPLOAD_ALLOWED_TYPES: image/jpeg,image/png,image/gif,application/pdf
|
||||
# 限流配置
|
||||
THROTTLE_TTL: 60
|
||||
THROTTLE_LIMIT: 100
|
||||
# 健康检查配置
|
||||
STARTUP_HEALTH_CHECK: true
|
||||
STARTUP_HEALTH_TIMEOUT_MS: 30000
|
||||
# Swagger配置
|
||||
SWAGGER_ENABLED: true
|
||||
SWAGGER_TITLE: WWJCloud API
|
||||
SWAGGER_DESCRIPTION: WWJCloud NestJS API Documentation
|
||||
SWAGGER_VERSION: 1.0.0
|
||||
SWAGGER_AUTH_ENABLED: true
|
||||
SWAGGER_TOKEN: wwjcloud-swagger-token
|
||||
depends_on:
|
||||
mysql:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test: ["CMD", "node", "-e", "require('http').get('http://localhost:3000/health', (r) => {process.exit(r.statusCode === 200 ? 0 : 1)})"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 40s
|
||||
networks:
|
||||
- wwjcloud-network
|
||||
|
||||
# ========================================
|
||||
# Admin 前端管理面板
|
||||
# ========================================
|
||||
admin-frontend:
|
||||
build:
|
||||
context: ./wwjcloud-nest/admin
|
||||
dockerfile: Dockerfile
|
||||
container_name: wwjcloud-admin
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "80:80"
|
||||
depends_on:
|
||||
nestjs-backend:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost/"]
|
||||
interval: 30s
|
||||
timeout: 3s
|
||||
retries: 3
|
||||
networks:
|
||||
- wwjcloud-network
|
||||
|
||||
# ========================================
|
||||
# 数据卷
|
||||
# ========================================
|
||||
volumes:
|
||||
mysql_data:
|
||||
driver: local
|
||||
redis_data:
|
||||
driver: local
|
||||
|
||||
# ========================================
|
||||
# 网络
|
||||
# ========================================
|
||||
networks:
|
||||
wwjcloud-network:
|
||||
driver: bridge
|
||||
|
||||
Reference in New Issue
Block a user