# Docker Compose für Rippy services: api: build: context: . dockerfile: docker/api/Dockerfile environment: - DATABASE_URL=postgresql://rippy:rippy@postgres:5432/rippy - REDIS_URL=redis://redis:6379/0 - TMDB_API_KEY=${TMDB_API_KEY} - THETVDB_API_KEY=${THETVDB_API_KEY} - JWT_SECRET_KEY=${JWT_SECRET_KEY} - LOG_LEVEL=INFO healthcheck: test: ["CMD-SHELL", "python -c 'import urllib.request; urllib.request.urlopen(\"http://localhost:8000/health\")'"] interval: 30s timeout: 10s retries: 3 start_period: 10s ports: - "8000:8000" volumes: - media:/app/media - temp:/app/temp networks: - rippy-net depends_on: - postgres - redis restart: unless-stopped read_only: true tmpfs: - /app/tmp - /run - /tmp worker: build: context: . dockerfile: docker/worker/Dockerfile environment: - DATABASE_URL=postgresql://rippy:rippy@postgres:5432/rippy - REDIS_URL=redis://redis:6379/0 - TMDB_API_KEY=${TMDB_API_KEY} - THETVDB_API_KEY=${THETVDB_API_KEY} - JWT_SECRET_KEY=${JWT_SECRET_KEY} - LOG_LEVEL=INFO volumes: - media:/app/media - temp:/app/temp - disc:/dev/disc - /dev/cdrom:/dev/cdrom:ro - /dev/dvd:/dev/dvd:ro - /dev/sr0:/dev/sr0:ro networks: - rippy-net depends_on: - postgres - redis restart: unless-stopped read_only: true tmpfs: - /app/tmp - /run - /tmp cap_add: - SYS_ADMIN devices: - /dev/sr0:/dev/sr0:r - /dev/cdrom:/dev/cdrom:r - /dev/dvd:/dev/dvd:r ui: build: context: . dockerfile: docker/ui/Dockerfile ports: - "80:80" networks: - rippy-net depends_on: - api restart: unless-stopped postgres: image: postgres:16-alpine environment: - POSTGRES_USER=rippy - POSTGRES_PASSWORD=rippy - POSTGRES_DB=rippy volumes: - postgres-data:/var/lib/postgresql/data networks: - rippy-net restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -U rippy -d rippy"] interval: 10s timeout: 5s retries: 5 redis: image: redis:7-alpine volumes: - redis-data:/data networks: - rippy-net restart: unless-stopped command: redis-server --appendonly yes healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 networks: rippy-net: driver: bridge volumes: media: temp: disc: cdrom: dvd: postgres-data: redis-data: