Files
rippy/docker-compose.yml
T
Hitonabi efa642e676 Etappe 6: Sicherheit
- docker-compose.yml mit read_only: true, tmpfs, healthchecks
- API- und Worker-Dockerfiles mit minimalem Image
- requirements.txt für Python-Abhängigkeiten
2026-07-21 17:26:01 +02:00

112 lines
2.2 KiB
YAML

# 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}
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}
volumes:
- media:/app/media
- temp:/app/temp
- disc:/dev/disc
- cdrom:/dev/cdrom
- dvd:/dev/dvd
networks:
- rippy-net
depends_on:
- postgres
- redis
restart: unless-stopped
read_only: true
tmpfs:
- /app/tmp
- /run
- /tmp
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: