You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
1.6 KiB
YAML

# deploy/docker-compose.yml — dev(단일 머신) 자기호스트
# 기본: SQLite 볼륨 + Ollama 로컬 + Caddy HTTPS. prod 오버라이드는 docker-compose.prod.yml.
services:
backend:
build: ../backend
env_file: [.env.prod]
environment:
DATABASE_URL: sqlite:////data/ari.db
OLLAMA_HOST: http://ollama:11434
WORKER_ENABLED: "false" # 웹 컨테이너는 스케줄러 미가동(잡 중복 방지)
BACKUP_DIR: /backups
volumes:
- ari-data:/data
- ari-backups:/backups
depends_on: [ollama]
restart: unless-stopped
worker:
build: ../backend
env_file: [.env.prod]
environment:
DATABASE_URL: sqlite:////data/ari.db
OLLAMA_HOST: http://ollama:11434
WORKER_ENABLED: "true" # 스케줄러 전용 컨테이너 1개만 true
command: ["python", "-m", "app.worker.runner"]
volumes:
- ari-data:/data
- ari-backups:/backups
depends_on: [backend, ollama]
restart: unless-stopped
frontend:
build: ../frontend
environment:
NEXT_PUBLIC_API_BASE: "" # 동일 출처(Caddy 가 /api 를 backend 로 라우팅)
NEXT_PUBLIC_AUTH_ENABLED: "true"
depends_on: [backend]
restart: unless-stopped
ollama:
image: ollama/ollama:latest
volumes:
- ollama-models:/root/.ollama
restart: unless-stopped
caddy:
image: caddy:2-alpine
ports: ["80:80", "443:443"]
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy-data:/data
- caddy-config:/config
depends_on: [frontend, backend]
restart: unless-stopped
volumes:
ari-data:
ari-backups:
ollama-models:
caddy-data:
caddy-config: