Files
waooplus/docker-compose.yml
saturn 9aff44e37a refactor: analysis workflow architecture
fix: NEXTAUTH_URL

fix: prevent project model edits from affecting default model
2026-03-16 21:48:57 +08:00

153 lines
5.0 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
services:
# ==================== MySQL ====================
mysql:
image: mysql:8.0
container_name: waoowaoo-mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: waoowaoo123
MYSQL_DATABASE: waoowaoo
MYSQL_ROOT_HOST: "%"
ports:
- "13306:3306"
volumes:
- mysql_data:/var/lib/mysql
command:
- "--default-authentication-plugin=mysql_native_password"
- "--sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"
healthcheck:
test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -uroot -pwaoowaoo123"]
interval: 5s
timeout: 5s
retries: 30
start_period: 15s
# ==================== Redis ====================
redis:
image: redis:7-alpine
container_name: waoowaoo-redis
restart: unless-stopped
ports:
- "16379:6379"
volumes:
- redis_data:/data
command: ["redis-server", "--appendonly", "yes"]
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 5s
retries: 30
start_period: 5s
# ==================== MinIO ====================
minio:
image: minio/minio:RELEASE.2025-02-28T09-55-16Z
container_name: waoowaoo-minio
restart: unless-stopped
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
command: server /data --console-address ":9001"
ports:
- "19000:9000"
- "19001:9001"
volumes:
- minio_data:/data
healthcheck:
test: ["CMD", "curl", "-f", "http://127.0.0.1:9000/minio/health/live"]
interval: 5s
timeout: 5s
retries: 30
start_period: 10s
# ==================== App (Next.js + Workers) ====================
app:
image: ghcr.io/saturndec/waoowaoo:latest
container_name: waoowaoo-app
restart: unless-stopped
environment:
# 数据库(指向容器内部 MySQL用服务名 mysql 而非 localhost
DATABASE_URL: "mysql://root:waoowaoo123@mysql:3306/waoowaoo"
# Redis指向容器内部 Redis用服务名 redis
REDIS_HOST: redis
REDIS_PORT: "6379"
REDIS_USERNAME: ""
REDIS_PASSWORD: ""
REDIS_TLS: ""
# 存储:默认 MinIOS3 兼容)
STORAGE_TYPE: minio
MINIO_ENDPOINT: "http://minio:9000"
MINIO_REGION: "us-east-1"
MINIO_BUCKET: "waoowaoo"
MINIO_ACCESS_KEY: "minioadmin"
MINIO_SECRET_KEY: "minioadmin"
MINIO_FORCE_PATH_STYLE: "true"
# 外部访问地址(浏览器实际访问)
NEXTAUTH_URL: "http://localhost:13000"
# 容器内自调用地址(服务端 fetch 自己的 API / 文件)
INTERNAL_APP_URL: "http://127.0.0.1:3000"
NEXTAUTH_SECRET: "waoowaoo-default-secret-2026"
# 内部密钥
CRON_SECRET: "waoowaoo-docker-cron-secret"
INTERNAL_TASK_TOKEN: "waoowaoo-docker-task-token"
API_ENCRYPTION_KEY: "waoowaoo-opensource-fixed-key-2026"
# Worker 配置
WATCHDOG_INTERVAL_MS: "30000"
TASK_HEARTBEAT_TIMEOUT_MS: "90000"
QUEUE_CONCURRENCY_IMAGE: "50"
QUEUE_CONCURRENCY_VIDEO: "50"
QUEUE_CONCURRENCY_VOICE: "20"
QUEUE_CONCURRENCY_TEXT: "50"
# Bull Board
BULL_BOARD_HOST: "0.0.0.0"
BULL_BOARD_PORT: "3010"
BULL_BOARD_BASE_PATH: "/admin/queues"
BULL_BOARD_USER: ""
BULL_BOARD_PASSWORD: ""
# 日志
LOG_UNIFIED_ENABLED: "true"
LOG_LEVEL: "INFO"
LOG_FORMAT: "json"
LOG_DEBUG_ENABLED: "false"
LOG_AUDIT_ENABLED: "true"
LOG_SERVICE: "waoowaoo"
LOG_REDACT_KEYS: "password,token,apiKey,apikey,authorization,cookie,secret,access_token,refresh_token"
# 计费
BILLING_MODE: "OFF"
# 流式
LLM_STREAM_EPHEMERAL_ENABLED: "true"
ports:
- "13000:3000"
- "13010:3010"
volumes:
- ./data:/app/data
- ./docker-logs:/app/logs
depends_on:
mysql:
condition: service_healthy
redis:
condition: service_healthy
minio:
condition: service_healthy
command: >
sh -c "
npx prisma db push --skip-generate &&
(sleep 5 && echo '' &&
echo '╔══════════════════════════════════════════════════╗' &&
echo '║ waoowaoo is ready! ║' &&
echo '║ ║' &&
echo '║ HTTP: http://localhost:13000 ║' &&
echo '║ ║' &&
echo '║ For HTTPS, run Caddy on host: ║' &&
echo '║ caddy run --config Caddyfile ║' &&
echo '║ Then open: https://localhost:1443 ║' &&
echo '╚══════════════════════════════════════════════════╝' &&
echo '') &
npm run start
"
volumes:
mysql_data:
redis_data:
minio_data: