Files
Jellyswarrm/dev/docker-compose.yml
2026-07-26 14:55:28 +02:00

214 lines
5.6 KiB
YAML

x-jellyfin: &jellyfin
image: jellyfin/jellyfin:${JELLYFIN_VERSION:?Set JELLYFIN_VERSION in dev/.env}
environment: &jellyfin-environment
PUID: 1000
PGID: 1000
TZ: UTC
restart: unless-stopped
networks:
- jellyfin-dev-net
x-jellyfin-init: &jellyfin-init
image: ghcr.io/astral-sh/uv:python3.12-alpine
volumes:
- ./scripts/init-jellyfin.py:/scripts/init-jellyfin.py:ro
working_dir: /scripts
command: ["uv", "run", "/scripts/init-jellyfin.py"]
restart: "no"
networks:
- jellyfin-dev-net
x-jellyswarrm-user: &jellyswarrm-user
JELLYSWARRM_USERNAME: test
JELLYSWARRM_PASSWORD: test
x-movies-init-environment: &movies-init-environment
<<: *jellyswarrm-user
COLLECTION_NAME: Movies
COLLECTION_PATH: /media/movies
COLLECTION_TYPE: movies
x-shows-init-environment: &shows-init-environment
<<: *jellyswarrm-user
COLLECTION_NAME: Shows
COLLECTION_PATH: /media/tv-shows
COLLECTION_TYPE: tvshows
x-music-init-environment: &music-init-environment
<<: *jellyswarrm-user
COLLECTION_NAME: Music
COLLECTION_PATH: /media/music
COLLECTION_TYPE: music
services:
jellyfin-movies:
<<: *jellyfin
container_name: jellyfin-movies
environment:
<<: *jellyfin-environment
JELLYFIN_PublishedServerUrl: http://localhost:8096
volumes:
- ./data/jellyfin-movies/config:/config
- ./data/jellyfin-movies/cache:/cache
- ./media/movies/server-1:/media/movies:ro
ports:
- "8096:8096"
jellyfin-movies-init:
<<: *jellyfin-init
container_name: jellyfin-movies-init
environment:
<<: *movies-init-environment
URL: http://jellyfin-movies:8096
SERVER_NAME: Movies 1
depends_on:
jellyfin-movies:
condition: service_healthy
jellyfin-tvshows:
<<: *jellyfin
container_name: jellyfin-tvshows
environment:
<<: *jellyfin-environment
JELLYFIN_PublishedServerUrl: http://localhost:8097
volumes:
- ./data/jellyfin-tvshows/config:/config
- ./data/jellyfin-tvshows/cache:/cache
- ./media/tv-shows/server-1:/media/tv-shows:ro
ports:
- "8097:8096"
jellyfin-tvshows-init:
<<: *jellyfin-init
container_name: jellyfin-tvshows-init
environment:
<<: *shows-init-environment
URL: http://jellyfin-tvshows:8096
SERVER_NAME: Shows 1
depends_on:
jellyfin-tvshows:
condition: service_healthy
jellyfin-music:
<<: *jellyfin
container_name: jellyfin-music
environment:
<<: *jellyfin-environment
JELLYFIN_PublishedServerUrl: http://localhost:8098
volumes:
- ./data/jellyfin-music/config:/config
- ./data/jellyfin-music/cache:/cache
- ./media/music/server-1:/media/music:ro
ports:
- "8098:8096"
jellyfin-music-init:
<<: *jellyfin-init
container_name: jellyfin-music-init
environment:
<<: *music-init-environment
URL: http://jellyfin-music:8096
SERVER_NAME: Music 1
depends_on:
jellyfin-music:
condition: service_healthy
jellyfin-movies-2:
<<: *jellyfin
container_name: jellyfin-movies-2
environment:
<<: *jellyfin-environment
JELLYFIN_PublishedServerUrl: http://localhost:8099
volumes:
- ./data/jellyfin-movies-2/config:/config
- ./data/jellyfin-movies-2/cache:/cache
- ./media/movies/server-2:/media/movies:ro
ports:
- "8099:8096"
jellyfin-movies-2-init:
<<: *jellyfin-init
container_name: jellyfin-movies-2-init
environment:
<<: *movies-init-environment
URL: http://jellyfin-movies-2:8096
SERVER_NAME: Movies 2
depends_on:
jellyfin-movies-2:
condition: service_healthy
jellyfin-tvshows-2:
<<: *jellyfin
container_name: jellyfin-tvshows-2
environment:
<<: *jellyfin-environment
JELLYFIN_PublishedServerUrl: http://localhost:8100
volumes:
- ./data/jellyfin-tvshows-2/config:/config
- ./data/jellyfin-tvshows-2/cache:/cache
- ./media/tv-shows/server-2:/media/tv-shows:ro
ports:
- "8100:8096"
jellyfin-tvshows-2-init:
<<: *jellyfin-init
container_name: jellyfin-tvshows-2-init
environment:
<<: *shows-init-environment
URL: http://jellyfin-tvshows-2:8096
SERVER_NAME: Shows 2
depends_on:
jellyfin-tvshows-2:
condition: service_healthy
jellyfin-music-2:
<<: *jellyfin
container_name: jellyfin-music-2
environment:
<<: *jellyfin-environment
JELLYFIN_PublishedServerUrl: http://localhost:8101
volumes:
- ./data/jellyfin-music-2/config:/config
- ./data/jellyfin-music-2/cache:/cache
- ./media/music/server-2:/media/music:ro
ports:
- "8101:8096"
jellyfin-music-2-init:
<<: *jellyfin-init
container_name: jellyfin-music-2-init
environment:
<<: *music-init-environment
URL: http://jellyfin-music-2:8096
SERVER_NAME: Music 2
depends_on:
jellyfin-music-2:
condition: service_healthy
caddy:
image: caddy:latest
container_name: jellyswarrm-caddy
ports:
- "8000:80"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
networks:
- jellyfin-dev-net
depends_on:
jellyfin-movies-init:
condition: service_completed_successfully
jellyfin-tvshows-init:
condition: service_completed_successfully
jellyfin-music-init:
condition: service_completed_successfully
jellyfin-movies-2-init:
condition: service_completed_successfully
jellyfin-tvshows-2-init:
condition: service_completed_successfully
jellyfin-music-2-init:
condition: service_completed_successfully
networks:
jellyfin-dev-net:
driver: bridge