| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- services:
- # PostgreSQL 数据库
- postgres:
- image: postgres:15-alpine
- container_name: maas-postgres
- restart: unless-stopped
- environment:
- POSTGRES_USER: ${DB_USER:-postgres}
- POSTGRES_PASSWORD: ${DB_PASSWORD:-postgres123}
- POSTGRES_DB: ${DB_NAME:-aigcspace_test}
- ports:
- - "${DB_PORT_EXTERNAL:-5433}:5432"
- volumes:
- - postgres_data:/var/lib/postgresql/data
- - ./backend/aigcspace_clean.sql:/docker-entrypoint-initdb.d/init.sql
- healthcheck:
- test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-postgres}"]
- interval: 10s
- timeout: 5s
- retries: 5
- # Redis 缓存
- redis:
- image: redis:7-alpine
- container_name: maas-redis
- restart: unless-stopped
- command: redis-server --requirepass ${REDIS_PASSWORD:-redis123}
- ports:
- - "${REDIS_PORT_EXTERNAL:-6380}:6379"
- volumes:
- - redis_data:/data
- healthcheck:
- test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD:-redis123}", "ping"]
- interval: 10s
- timeout: 5s
- retries: 5
- # 后端服务
- backend:
- build:
- context: ./backend
- dockerfile: Dockerfile
- container_name: maas-backend
- restart: unless-stopped
- ports:
- - "${BACKEND_PORT:-8010}:8010"
- environment:
- - DB_HOST=postgres
- - DB_PORT=5432
- - DB_USER=${DB_USER:-postgres}
- - DB_PASSWORD=${DB_PASSWORD:-postgres123}
- - DB_NAME=${DB_NAME:-aigcspace_test}
- - REDIS_URL=redis://redis:6379
- - REDIS_PASSWORD=${REDIS_PASSWORD:-redis123}
- - ENCRYPTION_KEY=${ENCRYPTION_KEY:-wxcz-aigc-default-encryption-key}
- - AES_ENCRYPTION_KEY=${AES_ENCRYPTION_KEY:-}
- - JWT_SECRET_KEY=${JWT_SECRET_KEY:-wxcz-aigc-space-jwt-secret-key-2024}
- - JWT_EXPIRE_HOURS=${JWT_EXPIRE_HOURS:-24}
- - DB_POOL_SIZE=2
- - DB_MAX_OVERFLOW=1
- - GUNICORN_WORKERS=2
- - APP_HOST=0.0.0.0
- - APP_PORT=8010
- - DEBUG=${DEBUG:-false}
- # SSO 配置
- - SSO_BASE_URL=${SSO_BASE_URL:-http://192.168.92.61:8200}
- - SSO_CLIENT_ID=${SSO_CLIENT_ID:-0SkYt2YdRx5xZjuMO15eWn6v4Dpz9UVr}
- - SSO_CLIENT_SECRET=${SSO_CLIENT_SECRET:-GA7lJ9VnSLChF9uyms9E1sa899X3Ht1dvgZ0eFARuFSM1xTIfsnlPToWBMY17j5T}
- - SSO_REDIRECT_URI=${SSO_REDIRECT_URI:-http://192.168.92.150/api/oauth/callback}
- - SSO_ADMIN_REDIRECT_URI=${SSO_ADMIN_REDIRECT_URI:-http://192.168.92.150/api/admin/oauth/callback}
- - SSO_SCOPE=${SSO_SCOPE:-profile email}
- - SSO_LOGOUT_REDIRECT_URL=${SSO_LOGOUT_REDIRECT_URL:-http://192.168.92.61:9200/login}
- # OSS 配置
- - OSS_ACCESS_KEY_ID=${OSS_ACCESS_KEY_ID}
- - OSS_ACCESS_KEY_SECRET=${OSS_ACCESS_KEY_SECRET}
- - OSS_ENDPOINT=${OSS_ENDPOINT:-oss-cn-beijing.aliyuncs.com}
- - OSS_BUCKET_NAME=${OSS_BUCKET_NAME}
- - OSS_BUCKET_DOMAIN=${OSS_BUCKET_DOMAIN}
- # 爬虫同步配置
- - CRAWLER_BASE_URL=${CRAWLER_BASE_URL:-https://crawler-api.aitoolcore.com}
- - CRAWLER_REFERER=${CRAWLER_REFERER:-https://aigc.aitoolcore.com}
- - APIKEY_ENCRYPT_KEY=${APIKEY_ENCRYPT_KEY:-25e9e87b18cf40d0ed0f102b8d2ec3a8}
- depends_on:
- postgres:
- condition: service_healthy
- redis:
- condition: service_healthy
- volumes:
- - backend_logs:/app/logs
- - ./backend/data:/app/data
- # Nginx 同时服务用户端前端和管理后台
- nginx:
- build:
- context: .
- dockerfile: Dockerfile
- container_name: maas-nginx
- restart: unless-stopped
- ports:
- - "${NGINX_PORT:-80}:80"
- depends_on:
- - backend
- volumes:
- postgres_data:
- redis_data:
- backend_logs:
|