diff --git a/opencode/docker-compose.yml b/opencode/docker-compose.yml index 530792c..227c652 100644 --- a/opencode/docker-compose.yml +++ b/opencode/docker-compose.yml @@ -1,36 +1,60 @@ services: - opencode-web: - image: ghcr.io/anomalyco/opencode:latest - container_name: opencode_web_gui - # Startet OpenCode direkt im Web-Server-Modus auf allen Schnittstellen (0.0.0.0) - command: opencode web --port 4096 --hostname 0.0.0.0 + # --- 1. DATENBANK (PostgreSQL) --- + db: + image: postgres:16-alpine + container_name: ${STACK_NAME:-opencode_test}_db restart: always environment: - - TZ=${TIMEZONE} - # Absicherung der Web-Oberfläche für den Netzwerkzugriff - - OPENCODE_SERVER_USERNAME=${WEB_USER} - - OPENCODE_SERVER_PASSWORD=${WEB_PASSWORD} - # API-Keys für Ihre LLM-Provider - - OPENAI_API_KEY=${OPENAI_API_KEY} - - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} - - DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY} - # Git-Konfiguration für die Commits des Agenten - - GIT_AUTHOR_NAME=${GIT_NAME} - - GIT_AUTHOR_EMAIL=${GIT_EMAIL} - - GIT_COMMITTER_NAME=${GIT_NAME} - - GIT_COMMITTER_EMAIL=${GIT_EMAIL} + POSTGRES_USER: ${DB_USER:-opencode_user} + POSTGRES_PASSWORD: ${DB_PASSWORD:-test_password_123_secure} + POSTGRES_DB: ${DB_NAME:-opencode_db} volumes: - # Persistente Speicherung der OpenCode-Konfiguration & Sessions - - opencode_config:/root/.config/opencode - - opencode_share:/root/.local/share/opencode - # Der Projektordner vom Docker-Host, den der Agent bearbeiten soll - - ${HOST_PROJECT_PATH}:/workspace - working_dir: /workspace - ports: - - "${WEB_PORT}:4096" + # 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: - opencode_config: - driver: local - opencode_share: - driver: local + db_data: + workspace_data: + +networks: + backend_network: + driver: bridge