services:
  jarvis:
    build:
      context: ../..
      dockerfile: deploy/docker/Dockerfile
    ports:
      - "8000:8000"
    environment:
      - OPENJARVIS_ENGINE_DEFAULT=ollama
      - OLLAMA_HOST=http://ollama:11434
      # The container binds 0.0.0.0, so an API key is REQUIRED. Compose fails
      # fast if OPENJARVIS_API_KEY is unset (set it in deploy/docker/.env —
      # see .env.example, or `export` it). Generate one: `jarvis auth generate-key`.
      - OPENJARVIS_API_KEY=${OPENJARVIS_API_KEY:?OPENJARVIS_API_KEY must be set (see deploy/docker/.env.example)}
    depends_on:
      ollama:
        condition: service_healthy
    restart: unless-stopped

  ollama:
    # Pinned to a fixed version + digest for reproducible deployments and
    # predictable rollbacks (#563). Bump deliberately, not implicitly via :latest.
    image: ollama/ollama:0.30.10@sha256:bfc9c6d53cc6989aa5131a6fde6b162b2802d4d337657f3253b5f69579bddeee
    ports:
      - "11434:11434"
    volumes:
      - ollama-models:/root/.ollama
    healthcheck:
      test: ["CMD", "ollama", "list"]
      interval: 5s
      timeout: 3s
      retries: 10
      start_period: 10s
    restart: unless-stopped

volumes:
  ollama-models:
