Files
container/opencode/docker-compose.yml
T

89 lines
3.1 KiB
YAML

services:
# --- 1. OIDC SECURITY PROXY ---
auth_proxy:
image: quay.io/oauth2-proxy/oauth2-proxy:latest
container_name: ${STACK_NAME:-opencode_20}_oidc_proxy
restart: always
ports:
- "${HOST_PORT:-4180}:4180"
environment:
- OAUTH2_PROXY_HTTP_ADDRESS=0.0.0.0:4180
- OAUTH2_PROXY_REDIRECT_URL=https://${DOMAIN_NAME:-localhost}/oauth2/callback
- OAUTH2_PROXY_EMAIL_DOMAINS=*
- OAUTH2_PROXY_UPSTREAM=http://app:4096
- OAUTH2_PROXY_PROVIDER=${OIDC_PROVIDER:-generic}
- OAUTH2_PROXY_CLIENT_ID=${OIDC_CLIENT_ID:-fallback_id}
- OAUTH2_PROXY_CLIENT_SECRET=${OIDC_CLIENT_SECRET:-fallback_secret}
- OAUTH2_PROXY_OIDC_ISSUER_URL=${OIDC_ISSUER_URL:-https://localhost/issuer}
- OAUTH2_PROXY_COOKIE_SECRET=${OIDC_COOKIE_SECRET:-Vk5mbU16UnpOSGRDTVZ4T1ZsTmJZazlTZkU5VzBRMD0=}
- OAUTH2_PROXY_COOKIE_SECURE=${COOKIE_SECURE_HTTPS:-false}
networks:
- proxy_network
- backend_network
# --- 2. MULTI-PROJECT OPENCODE SERVER ---
app:
image: ghcr.io/anomalyco/opencode:${APP_IMAGE_TAG:-2.0.0}
container_name: ${STACK_NAME:-opencode_20}_server
restart: always
# Wir starten den Server im übergeordneten /workspaces Ordner
command: opencode serve --port 4096 --hostname 0.0.0.0
environment:
# Globale Git Identität für alle Commits des Agenten
- GIT_USER_NAME=${GIT_USER_NAME:-OpenCode Agent}
- GIT_USER_EMAIL=${GIT_USER_EMAIL:-opencode-bot@local.internal}
# Das Token wird als Umgebungsvariable bereitgestellt, damit Git-Befehle im Chat autorisiert sind
- GITEA_TOKEN=${GITEA_PAT:?error_GITEA_PAT_is_required}
- GITHUB_TOKEN=${GITEA_PAT:-}
# KI & DB
- OPENAI_API_KEY=${OPENAI_KEY:-}
- ANTHROPIC_API_KEY=${ANTHROPIC_KEY:-}
- DB_HOST=db
- DB_USER=${DB_USER:-opencode_user}
- DB_PASSWORD=${DB_PASSWORD:-test_password_123_secure}
- DB_NAME=${DB_NAME:-opencode_db}
volumes:
# Ein globaler Ordner auf Ihrem Server, der alle Ihre Git-Projekte enthält
- ${HOST_WORKSPACES_ROOT_PATH:-workspaces_data}:/workspaces
# MCP-Konfiguration und Einstellungen
- ${HOST_CONFIG_PATH:-app_config}:/root/.config/opencode
# Der Server startet im Root-Verzeichnis aller Projekte
working_dir: /workspaces
networks:
- backend_network
depends_on:
db:
condition: service_healthy
# --- 3. DATABASE TIER ---
db:
image: postgres:16-alpine
container_name: ${STACK_NAME:-opencode_20}_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:
- ${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
volumes:
db_data:
workspaces_data:
app_config:
networks:
proxy_network:
driver: bridge
backend_network:
driver: bridge
internal: true