version: '3.8' services: 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 env_file: - ./aiprovider/.env - ${PLANET_AI_PROVIDER_RUNTIME_ENV_FILE:-./aiprovider/.env} container_name: planet_aiprovider ports: - "8010:8010" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8010/health"] interval: 10s timeout: 5s retries: 5 postgres: image: postgres:15 container_name: planet_postgres environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: planet_db ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 5s retries: 5 redis: image: redis:7-alpine container_name: planet_redis ports: - "6379:6379" volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 volumes: postgres_data: redis_data: secrets: planet_uv_config: file: ${PLANET_UV_CONFIG_FILE:-/dev/null}