Files
gpu-services/docker-compose.yml
T
Hyungi Ahn 637df9df2e fix(compose): nanoclaude build context를 루트로 변경
Dockerfile이 nanoclaude/와 infra/ 둘 다 COPY하므로
build context가 프로젝트 루트여야 함.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 15:01:28 +09:00

96 lines
2.6 KiB
YAML

services:
caddy:
image: caddy:2-alpine
container_name: gpu-caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./caddy/Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
depends_on:
- hub-api
- hub-web
- nanoclaude
networks:
- gateway-net
hub-web:
build: ./hub-web
container_name: gpu-hub-web
restart: unless-stopped
networks:
- gateway-net
hub-api:
build: ./hub-api
container_name: gpu-hub-api
restart: unless-stopped
environment:
- OWNER_PASSWORD=${OWNER_PASSWORD}
- GUEST_PASSWORD=${GUEST_PASSWORD}
- JWT_SECRET=${JWT_SECRET}
- BACKENDS_CONFIG=/app/config/backends.json
- CORS_ORIGINS=${CORS_ORIGINS:-http://localhost:5173}
- DB_PATH=/app/data/gateway.db
volumes:
- hub_data:/app/data
- ./backends.json:/app/config/backends.json:ro
extra_hosts:
- "host.docker.internal:host-gateway"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
interval: 15s
timeout: 5s
retries: 3
networks:
- gateway-net
nanoclaude:
build:
context: .
dockerfile: nanoclaude/Dockerfile
container_name: gpu-nanoclaude
restart: unless-stopped
environment:
- EXAONE_BASE_URL=http://host.docker.internal:11434
- EXAONE_MODEL=${EXAONE_MODEL:-exaone3.5:7.8b-instruct-q8_0}
- REASONING_BASE_URL=${REASONING_BASE_URL:-http://192.168.1.122:8800}
- REASONING_MODEL=${REASONING_MODEL:-mlx-community/gemma-4-26b-a4b-it-8bit}
- PIPELINE_ENABLED=${PIPELINE_ENABLED:-true}
- MAX_CONCURRENT_JOBS=${MAX_CONCURRENT_JOBS:-3}
- DB_PATH=/app/data/nanoclaude.db
- CALDAV_URL=${CALDAV_URL:-}
- CALDAV_USER=${CALDAV_USER:-}
- CALDAV_PASS=${CALDAV_PASS:-}
- MAILPLUS_HOST=${MAILPLUS_HOST:-}
- MAILPLUS_PORT=${MAILPLUS_PORT:-993}
- MAILPLUS_USER=${MAILPLUS_USER:-}
- MAILPLUS_PASS=${MAILPLUS_PASS:-}
- DOCUMENT_API_URL=${DOCUMENT_API_URL:-}
- DOCUMENT_API_TOKEN=${DOCUMENT_API_TOKEN:-}
- SYNOLOGY_INCOMING_URL=${SYNOLOGY_INCOMING_URL:-}
- SYNOLOGY_OUTGOING_TOKEN=${SYNOLOGY_OUTGOING_TOKEN:-}
- API_KEY=${NANOCLAUDE_API_KEY:-}
volumes:
- nano_data:/app/data
extra_hosts:
- "host.docker.internal:host-gateway"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8100/health"]
interval: 15s
timeout: 5s
retries: 3
networks:
- gateway-net
volumes:
caddy_data:
hub_data:
nano_data:
networks:
gateway-net:
name: gpu-gateway-network