Files
Jellyswarrm/dev/docker-compose.yml
2026-01-21 17:50:50 +01:00

150 lines
3.9 KiB
YAML

services:
content-downloader:
image: ghcr.io/astral-sh/uv:python3.11-alpine
volumes:
- ./data/media:/downloads
- ./scripts/download-content.py:/scripts/download-content.py:ro
command: ["uv", "run", "/scripts/download-content.py"]
tty: true
jellyfin-movies:
image: jellyfin/jellyfin:latest
container_name: jellyfin-movies
environment:
- PUID=1000
- PGID=1000
- TZ=UTC
- JELLYFIN_PublishedServerUrl=http://localhost:8096
volumes:
- ./data/jellyfin-movies/config:/config
- ./data/jellyfin-movies/cache:/cache
- ./data/media:/media:ro
ports:
- "8096:8096"
restart: unless-stopped
networks:
- jellyfin-dev-net
depends_on:
content-downloader:
condition: service_completed_successfully
jellyfin-movies-init:
image: ghcr.io/astral-sh/uv:python3.11-alpine
container_name: jellyfin-movies-init
volumes:
- ./scripts/init-jellyfin.py:/scripts/init-jellyfin.py:ro
working_dir: /scripts
command: ["uv", "run", "/scripts/init-jellyfin.py"]
environment:
- URL=http://jellyfin-movies:8096
- USERNAME=user
- PASSWORD=movies
- COLLECTION_NAME=Movies
- COLLECTION_PATH=/media/movies
- COLLECTION_TYPE=movies
networks:
- jellyfin-dev-net
depends_on:
jellyfin-movies:
condition: service_started
jellyfin-tvshows:
image: jellyfin/jellyfin:latest
container_name: jellyfin-tvshows
environment:
- PUID=1000
- PGID=1000
- TZ=UTC
- JELLYFIN_PublishedServerUrl=http://localhost:8097
volumes:
- ./data/jellyfin-tvshows/config:/config
- ./data/jellyfin-tvshows/cache:/cache
- ./data/media:/media:ro
ports:
- "8097:8096"
restart: unless-stopped
networks:
- jellyfin-dev-net
depends_on:
content-downloader:
condition: service_completed_successfully
jellyfin-tvshows-init:
image: ghcr.io/astral-sh/uv:python3.11-alpine
container_name: jellyfin-tvshows-init
volumes:
- ./scripts/init-jellyfin.py:/scripts/init-jellyfin.py:ro
working_dir: /scripts
command: ["uv", "run", "/scripts/init-jellyfin.py"]
environment:
- URL=http://jellyfin-tvshows:8096
- USERNAME=user
- PASSWORD=shows
- COLLECTION_NAME=Shows
- COLLECTION_PATH=/media/tv-shows
- COLLECTION_TYPE=tvshows
networks:
- jellyfin-dev-net
depends_on:
jellyfin-tvshows:
condition: service_started
jellyfin-music:
image: jellyfin/jellyfin:latest
container_name: jellyfin-music
environment:
- PUID=1000
- PGID=1000
- TZ=UTC
- JELLYFIN_PublishedServerUrl=http://localhost:8098
volumes:
- ./data/jellyfin-music/config:/config
- ./data/jellyfin-music/cache:/cache
- ./data/media:/media:ro
ports:
- "8098:8096"
restart: unless-stopped
networks:
- jellyfin-dev-net
depends_on:
content-downloader:
condition: service_completed_successfully
jellyfin-music-init:
image: ghcr.io/astral-sh/uv:python3.11-alpine
container_name: jellyfin-music-init
volumes:
- ./scripts/init-jellyfin.py:/scripts/init-jellyfin.py:ro
working_dir: /scripts
command: ["uv", "run", "/scripts/init-jellyfin.py"]
environment:
- URL=http://jellyfin-music:8096
- USERNAME=user
- PASSWORD=music
- COLLECTION_NAME=Music
- COLLECTION_PATH=/media/music
- COLLECTION_TYPE=music
networks:
- jellyfin-dev-net
depends_on:
jellyfin-music:
condition: service_started
caddy:
image: caddy:latest
container_name: jellyswarrm-caddy
ports:
- "8000:80"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
networks:
- jellyfin-dev-net
depends_on:
- jellyfin-movies
- jellyfin-tvshows
- jellyfin-music
networks:
jellyfin-dev-net:
driver: bridge