dotb_ai-platform/compose.yaml
2026-09-25 09:55:44 +07:00

77 lines
2.5 KiB
YAML

name: ai-platform-local
services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_USER: ${POSTGRES_USER:-ai_platform}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-local-change-this-password}
POSTGRES_DB: ${POSTGRES_DB:-ai_platform}
ports:
- "127.0.0.1:${POSTGRES_PORT:-55432}:5432"
volumes:
- ai_platform_pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 5s
timeout: 5s
retries: 12
migrate:
build:
context: .
dockerfile: Dockerfile.backend
command: ["uv", "run", "--no-sync", "alembic", "upgrade", "head"]
environment:
AI_PLATFORM_DATABASE_URL: postgresql+asyncpg://${POSTGRES_USER:-ai_platform}:${POSTGRES_PASSWORD:-local-change-this-password}@postgres:5432/${POSTGRES_DB:-ai_platform}
AI_PLATFORM_ENVIRONMENT: ${AI_PLATFORM_ENVIRONMENT:-development}
depends_on:
postgres:
condition: service_healthy
restart: "no"
backend:
build:
context: .
dockerfile: Dockerfile.backend
environment:
AI_PLATFORM_DATABASE_URL: postgresql+asyncpg://${POSTGRES_USER:-ai_platform}:${POSTGRES_PASSWORD:-local-change-this-password}@postgres:5432/${POSTGRES_DB:-ai_platform}
AI_PLATFORM_ENVIRONMENT: ${AI_PLATFORM_ENVIRONMENT:-development}
AI_PLATFORM_TENANT_PROVISIONING_SECRET: ${AI_PLATFORM_TENANT_PROVISIONING_SECRET:-local-provisioner-replace-before-use}
AI_PLATFORM_WEBHOOK_URL: ${AI_PLATFORM_WEBHOOK_URL:-}
AI_PLATFORM_WEBHOOK_SIGNING_SECRET: ${AI_PLATFORM_WEBHOOK_SIGNING_SECRET:-}
AI_PLATFORM_AIHUB_BASE_URL: ${AI_PLATFORM_AIHUB_BASE_URL:-}
ports:
- "127.0.0.1:${BACKEND_PORT:-8000}:8000"
depends_on:
postgres:
condition: service_healthy
migrate:
condition: service_completed_successfully
healthcheck:
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/health/ready', timeout=2)"]
interval: 10s
timeout: 3s
retries: 6
start_period: 10s
web:
build:
context: .
dockerfile: apps/web/Dockerfile
environment:
NODE_ENV: production
HOST: 0.0.0.0
PORT: 3000
ORIGIN: ${WEB_ORIGIN:-http://localhost:3000}
BACKEND_INTERNAL_URL: http://backend:8000
ports:
- "127.0.0.1:${WEB_PORT:-3000}:3000"
depends_on:
backend:
condition: service_healthy
volumes:
ai_platform_pgdata:
name: ai_platform_pgdata