feat: add Docker containerization (Dockerfile, compose, dockerignore)

Multi-stage build: frontend (Vite) + backend (TypeScript) in one container.
Production image based on node:20-alpine with health check.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ronny
2026-04-06 10:05:10 +02:00
parent 06ed0ec3ce
commit 7bd22b53e9
3 changed files with 107 additions and 0 deletions
+34
View File
@@ -0,0 +1,34 @@
services:
tippspiel:
build:
context: .
dockerfile: Dockerfile
container_name: wm2026-tippspiel
restart: unless-stopped
ports:
- "3301:3001"
environment:
- NODE_ENV=production
- PORT=3001
- DATABASE_URL=${DATABASE_URL}
- SUPABASE_URL=${SUPABASE_URL}
- SUPABASE_SERVICE_ROLE_KEY=${SUPABASE_SERVICE_ROLE_KEY}
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
- FOOTBALL_API_KEY=${FOOTBALL_API_KEY}
- FOOTBALL_API_BASE_URL=https://api.football-data.org/v4
- ELEVENLABS_API_KEY=${ELEVENLABS_API_KEY}
- CORS_ORIGIN=${CORS_ORIGIN:-https://app.staffbase.com,http://localhost:5173}
- STAFFBASE_PUBLIC_KEY=${STAFFBASE_PUBLIC_KEY:-}
- STAFFBASE_PLUGIN_ID=${STAFFBASE_PLUGIN_ID:-}
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost:3001/health"]
interval: 30s
timeout: 5s
start_period: 10s
retries: 3
networks:
- main-network
networks:
main-network:
external: true