alphax/docker-compose.yml
2026-05-16 14:52:10 +08:00

78 lines
2.4 KiB
YAML

services:
postgres:
image: postgres:16
container_name: alphax-postgres
restart: unless-stopped
env_file:
- .env
environment:
POSTGRES_DB: "${POSTGRES_DB:-alphax_dev}"
POSTGRES_USER: "${POSTGRES_USER:-alphax}"
POSTGRES_PASSWORD: "${POSTGRES_PASSWORD:-alphax_dev_password}"
ports:
- "${POSTGRES_PORT:-5433}:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-alphax} -d ${POSTGRES_DB:-alphax_dev}"]
interval: 10s
timeout: 5s
retries: 5
alphax-web:
build:
context: .
dockerfile: Dockerfile
image: alphax:local
container_name: alphax-web
restart: unless-stopped
env_file:
- .env
environment:
PORT: "8190"
ALPHAX_ENV: "${ALPHAX_ENV:-dev}"
ALPHAX_DB_BACKEND: "postgres"
DATABASE_URL: "${DATABASE_URL:-postgresql://alphax:alphax_dev_password@postgres:5432/alphax_dev}"
# 仅当 app_user 表为空时创建默认管理员;已有用户或迁移旧库时不会覆盖。
ALPHAX_BOOTSTRAP_ADMIN: "${ALPHAX_BOOTSTRAP_ADMIN:-1}"
ALPHAX_DEFAULT_ADMIN_EMAIL: "${ALPHAX_DEFAULT_ADMIN_EMAIL:-admin@alphax.local}"
ALPHAX_DEFAULT_ADMIN_PASSWORD: "${ALPHAX_DEFAULT_ADMIN_PASSWORD:-AlphaXAdmin123}"
command: ["web"]
ports:
- "8191:8190"
volumes:
- ./data:/app/data
- ./logs:/app/logs
- ./rules.yaml:/app/rules.yaml
healthcheck:
test: ["CMD-SHELL", "curl -fsS http://127.0.0.1:8190/api/stats >/dev/null || exit 1"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
alphax-scheduler:
image: alphax:local
container_name: alphax-scheduler
restart: unless-stopped
depends_on:
alphax-web:
condition: service_started
env_file:
- .env
environment:
# 本地 Docker 副本需要真实跑链路,方便验证筛选/确认/跟踪/复盘结果。
# 调度器以后台子进程方式并发执行,并通过业务锁组规避主推荐写入冲突。
ALPHAX_SCHEDULER_DRY_RUN: "0"
ALPHAX_ENV: "${ALPHAX_ENV:-dev}"
ALPHAX_DB_BACKEND: "postgres"
DATABASE_URL: "${DATABASE_URL:-postgresql://alphax:alphax_dev_password@postgres:5432/alphax_dev}"
command: ["scheduler"]
volumes:
- ./data:/app/data
- ./logs:/app/logs
- ./rules.yaml:/app/rules.yaml
volumes:
postgres_data: