version: '3.8' services: ollama: image: ollama/ollama:latest container_name: planet_ollama ports: - "11434:11434" volumes: - ollama_data:/root/.ollama healthcheck: test: ["CMD", "ollama", "list"] interval: 20s timeout: 10s retries: 10 aiprovider: image: ${AI_PROVIDER_IMAGE_NAME:-planet-aiprovider:latest} build: context: . dockerfile: aiprovider/Dockerfile args: PYTHON_IMAGE: ${PYTHON_IMAGE:-python:3.14-slim} UV_IMAGE: ${UV_IMAGE:-ghcr.io/astral-sh/uv:latest} AI_PROVIDER_BUILD_FINGERPRINT: ${AI_PROVIDER_BUILD_FINGERPRINT:-unknown} secrets: - planet_uv_config container_name: planet_aiprovider ports: - "8010:8010" environment: AI_PROVIDER: ollama AI_BASE_URL: http://ollama:11434 AI_API_KEY: "" AI_MODEL: qwen2.5:7b AI_TIMEOUT_SECONDS: 60 AI_MAX_TOKENS: 1200 AI_PROVIDER_SERVICE_TOKEN: change_me depends_on: ollama: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8010/health"] interval: 10s timeout: 5s retries: 5 volumes: ollama_data: secrets: planet_uv_config: file: ${PLANET_UV_CONFIG_FILE:-/dev/null}