166 lines
4.7 KiB
YAML
166 lines
4.7 KiB
YAML
services:
|
|
mysql:
|
|
image: mysql:9.0
|
|
environment:
|
|
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
|
|
MYSQL_DATABASE: ${MYSQL_DATABASE}
|
|
MYSQL_USER: ${MYSQL_USER}
|
|
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
|
ports:
|
|
- "${MYSQL_PORT:-3306}:3306"
|
|
volumes:
|
|
- mysql_data:/var/lib/mysql
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -uroot -p$$MYSQL_ROOT_PASSWORD --silent"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 30
|
|
|
|
redis:
|
|
image: redis:7
|
|
ports:
|
|
- "${REDIS_PORT:-6379}:6379"
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "ping"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 30
|
|
|
|
rustfs:
|
|
image: rustfs/rustfs:latest
|
|
command: ["/data"]
|
|
environment:
|
|
RUSTFS_ACCESS_KEY: ${RUSTFS_ACCESS_KEY}
|
|
RUSTFS_SECRET_KEY: ${RUSTFS_SECRET_KEY}
|
|
RUSTFS_CONSOLE_ENABLE: "true"
|
|
ports:
|
|
- "${RUSTFS_PORT:-9000}:9000"
|
|
- "${RUSTFS_CONSOLE_PORT:-9001}:9001"
|
|
volumes:
|
|
- rustfs_data:/data
|
|
|
|
backend-init-db:
|
|
build:
|
|
context: ../..
|
|
dockerfile: deploy/docker/backend.Dockerfile
|
|
environment:
|
|
DATABASE_URL: mysql+aiomysql://${MYSQL_USER}:${MYSQL_PASSWORD}@mysql:3306/${MYSQL_DATABASE}
|
|
DEBUG: "false"
|
|
# S3 / RustFS
|
|
S3_ENDPOINT_URL: http://rustfs:9000
|
|
S3_REGION_NAME: us-east-1
|
|
S3_ACCESS_KEY_ID: ${RUSTFS_ACCESS_KEY}
|
|
S3_SECRET_ACCESS_KEY: ${RUSTFS_SECRET_KEY}
|
|
S3_BUCKET_NAME: ${S3_BUCKET_NAME}
|
|
# CORS
|
|
CORS_ORIGINS: http://localhost:7788,http://127.0.0.1:7788
|
|
# 可选
|
|
OPENAI_API_KEY: ${OPENAI_API_KEY-}
|
|
depends_on:
|
|
mysql:
|
|
condition: service_healthy
|
|
command: ["uv", "run", "python", "init_db.py"]
|
|
restart: "no"
|
|
|
|
mysql-init-sql:
|
|
image: mysql:9.0
|
|
depends_on:
|
|
mysql:
|
|
condition: service_healthy
|
|
backend-init-db:
|
|
condition: service_completed_successfully
|
|
environment:
|
|
MYSQL_DATABASE: ${MYSQL_DATABASE}
|
|
MYSQL_USER: ${MYSQL_USER}
|
|
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
|
volumes:
|
|
- ../../backend/sql:/sql:ro
|
|
command:
|
|
[
|
|
"bash",
|
|
"-lc",
|
|
"set -e; for f in $$(find /sql -maxdepth 1 -type f -name '*.sql' | sort); do echo \"[mysql-init-sql] applying $$f\"; mysql --default-character-set=utf8mb4 -h mysql -u\"$$MYSQL_USER\" -p\"$$MYSQL_PASSWORD\" \"$$MYSQL_DATABASE\" < \"$$f\"; done",
|
|
]
|
|
restart: "no"
|
|
|
|
backend:
|
|
build:
|
|
context: ../..
|
|
dockerfile: deploy/docker/backend.Dockerfile
|
|
environment:
|
|
DATABASE_URL: mysql+aiomysql://${MYSQL_USER}:${MYSQL_PASSWORD}@mysql:3306/${MYSQL_DATABASE}
|
|
REDIS_HOST: redis
|
|
REDIS_PORT: 6379
|
|
REDIS_DB: ${REDIS_DB:-0}
|
|
REDIS_PASSWORD: ${REDIS_PASSWORD:-}
|
|
CELERY_BROKER_URL: ${CELERY_BROKER_URL:-}
|
|
DEBUG: "false"
|
|
API_V1_PREFIX: /api/v1
|
|
# S3 / RustFS
|
|
S3_ENDPOINT_URL: http://rustfs:9000
|
|
S3_REGION_NAME: us-east-1
|
|
S3_ACCESS_KEY_ID: ${RUSTFS_ACCESS_KEY}
|
|
S3_SECRET_ACCESS_KEY: ${RUSTFS_SECRET_KEY}
|
|
S3_BUCKET_NAME: ${S3_BUCKET_NAME}
|
|
# CORS
|
|
CORS_ORIGINS: http://localhost:7788,http://127.0.0.1:7788
|
|
# 可选
|
|
OPENAI_API_KEY: ${OPENAI_API_KEY-}
|
|
ports:
|
|
- "8000:8000"
|
|
depends_on:
|
|
mysql:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
backend-init-db:
|
|
condition: service_completed_successfully
|
|
mysql-init-sql:
|
|
condition: service_completed_successfully
|
|
|
|
celery-worker:
|
|
build:
|
|
context: ../..
|
|
dockerfile: deploy/docker/backend.Dockerfile
|
|
environment:
|
|
DATABASE_URL: mysql+aiomysql://${MYSQL_USER}:${MYSQL_PASSWORD}@mysql:3306/${MYSQL_DATABASE}
|
|
REDIS_HOST: redis
|
|
REDIS_PORT: 6379
|
|
REDIS_DB: ${REDIS_DB:-0}
|
|
REDIS_PASSWORD: ${REDIS_PASSWORD:-}
|
|
CELERY_BROKER_URL: ${CELERY_BROKER_URL:-}
|
|
DEBUG: "false"
|
|
API_V1_PREFIX: /api/v1
|
|
S3_ENDPOINT_URL: http://rustfs:9000
|
|
S3_REGION_NAME: us-east-1
|
|
S3_ACCESS_KEY_ID: ${RUSTFS_ACCESS_KEY}
|
|
S3_SECRET_ACCESS_KEY: ${RUSTFS_SECRET_KEY}
|
|
S3_BUCKET_NAME: ${S3_BUCKET_NAME}
|
|
CORS_ORIGINS: http://localhost:7788,http://127.0.0.1:7788
|
|
OPENAI_API_KEY: ${OPENAI_API_KEY-}
|
|
depends_on:
|
|
mysql:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
backend-init-db:
|
|
condition: service_completed_successfully
|
|
mysql-init-sql:
|
|
condition: service_completed_successfully
|
|
command: ["uv", "run", "celery", "-A", "app.core.celery_app:celery_app", "worker", "-l", "info"]
|
|
|
|
front:
|
|
build:
|
|
context: ../..
|
|
dockerfile: deploy/docker/front.Dockerfile
|
|
environment:
|
|
BACKEND_URL: ${BACKEND_URL}
|
|
ports:
|
|
- "7788:80"
|
|
depends_on:
|
|
- backend
|
|
|
|
volumes:
|
|
mysql_data:
|
|
rustfs_data:
|