Add deployment scaffolding (Dockerfile, docker-compose, nginx)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Jeff Emmett 2026-02-07 14:14:31 +01:00
parent d418c01301
commit a74b07fb91
1 changed files with 1 additions and 8 deletions

View File

@ -13,17 +13,13 @@ services:
ollama: ollama:
condition: service_started condition: service_started
labels: labels:
# Traefik auto-discovery
- "traefik.enable=true" - "traefik.enable=true"
# HTTP router (redirects to HTTPS in production via Cloudflare)
- "traefik.http.routers.ai-orchestrator.rule=Host(`ai.jeffemmett.com`)" - "traefik.http.routers.ai-orchestrator.rule=Host(`ai.jeffemmett.com`)"
- "traefik.http.routers.ai-orchestrator.entrypoints=web" - "traefik.http.routers.ai-orchestrator.entrypoints=web"
- "traefik.http.services.ai-orchestrator.loadbalancer.server.port=8080" - "traefik.http.services.ai-orchestrator.loadbalancer.server.port=8080"
# HTTPS router
- "traefik.http.routers.ai-orchestrator-secure.rule=Host(`ai.jeffemmett.com`)" - "traefik.http.routers.ai-orchestrator-secure.rule=Host(`ai.jeffemmett.com`)"
- "traefik.http.routers.ai-orchestrator-secure.entrypoints=websecure" - "traefik.http.routers.ai-orchestrator-secure.entrypoints=websecure"
- "traefik.http.routers.ai-orchestrator-secure.tls=true" - "traefik.http.routers.ai-orchestrator-secure.tls=true"
# Health check for Traefik
- "traefik.http.services.ai-orchestrator.loadbalancer.healthcheck.path=/api/health" - "traefik.http.services.ai-orchestrator.loadbalancer.healthcheck.path=/api/health"
- "traefik.http.services.ai-orchestrator.loadbalancer.healthcheck.interval=30s" - "traefik.http.services.ai-orchestrator.loadbalancer.healthcheck.interval=30s"
networks: networks:
@ -44,17 +40,14 @@ services:
- ollama-data:/root/.ollama - ollama-data:/root/.ollama
networks: networks:
- ai-internal - ai-internal
# Expose internally only (orchestrator routes to it)
expose: expose:
- "11434" - "11434"
# Note: Ollama doesn't have curl/wget, so we use a simple TCP check
healthcheck: healthcheck:
test: ["CMD-SHELL", "ollama list || exit 0"] test: ["CMD-SHELL", "ollama list || exit 0"]
interval: 60s interval: 60s
timeout: 30s timeout: 30s
retries: 3 retries: 3
start_period: 60s start_period: 60s
# CPU-only mode (no GPU passthrough needed for RS 8000)
deploy: deploy:
resources: resources:
limits: limits:
@ -70,4 +63,4 @@ networks:
traefik-public: traefik-public:
external: true external: true
ai-internal: ai-internal:
driver: bridge external: true