services: # --- 1. DATENBANK (PostgreSQL) --- db: image: postgres:16-alpine container_name: ${STACK_NAME:-opencode_test}_db restart: always environment: POSTGRES_USER: ${DB_USER:-opencode_user} POSTGRES_PASSWORD: ${DB_PASSWORD:-test_password_123_secure} POSTGRES_DB: ${DB_NAME:-opencode_db} volumes: # Wenn HOST_DB_VOLUME_PATH leer ist, greift das lokale Named Volume - ${HOST_DB_VOLUME_PATH:-db_data}:/var/lib/postgresql/data networks: - backend_network healthcheck: test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-opencode_user} -d ${DB_NAME:-opencode_db}"] interval: 10s timeout: 5s retries: 5 # --- 2. OPENCODE AI AGENT (ghcr.io) --- app: image: ghcr.io/anomalyco/opencode:${APP_IMAGE_TAG:-latest} container_name: ${STACK_NAME:-opencode_test}_agent restart: always # WICHTIG für Terminal-Apps (TUI) im Container: stdin_open: true tty: true environment: # AI Provider API Keys (Werden über Portainer injiziert) - OPENAI_API_KEY=${OPENAI_KEY:-} - ANTHROPIC_API_KEY=${ANTHROPIC_KEY:-} - OPENCODE_API_KEY=${OPENCODE_ZEN_KEY:-} # Falls OpenCode Zen genutzt wird # Datenbank-Verbindung für den Agenten - DB_HOST=db - DB_USER=${DB_USER:-opencode_user} - DB_PASSWORD=${DB_PASSWORD:-test_password_123_secure} - DB_NAME=${DB_NAME:-opencode_db} volumes: # Ihr Code-Verzeichnis (Workspace), das der Agent analysieren soll - ${HOST_WORKSPACE_PATH:-workspace_data}:/workspace working_dir: /workspace networks: - backend_network depends_on: db: condition: service_healthy # Die Named Volumes als automatischer Fallback für die Test-Umgebung volumes: db_data: workspace_data: networks: backend_network: driver: bridge