# EcoBot Stack — deploybar über Portainer (Stacks → Add stack) services: ecobot: build: . image: ecobot:latest container_name: ecobot restart: unless-stopped # Werte kommen per Interpolation: lokal aus der .env im Projektordner (liest # docker compose automatisch), in Portainer aus den Stack-Environment-Variables environment: DISCORD_TOKEN: ${DISCORD_TOKEN} DISCORD_CLIENT_ID: ${DISCORD_CLIENT_ID} DISCORD_GUILD_ID: ${DISCORD_GUILD_ID:-} COMMIT_CHANNEL_ID: ${COMMIT_CHANNEL_ID} DEVLOG_CHANNEL_ID: ${DEVLOG_CHANNEL_ID} GITEA_WEBHOOK_SECRET: ${GITEA_WEBHOOK_SECRET} DISCORD_CLIENT_SECRET: ${DISCORD_CLIENT_SECRET} SESSION_SECRET: ${SESSION_SECRET} ADMIN_DISCORD_ID: ${ADMIN_DISCORD_ID} PUBLIC_URL: ${PUBLIC_URL:-https://bot.d4rkst3r.de} DB_PATH: /app/data/ecobot.db # HTTP-Endpoint für Gitea-Webhooks + Webinterface # NPM leitet bot.d4rkst3r.de → host.docker.internal:3080 ports: - "3080:3080" volumes: # SQLite & Co. überleben Container-Neustarts - ecobot_data:/app/data volumes: ecobot_data: