mirror of
				https://github.com/zoriya/Kyoo.git
				synced 2025-10-31 02:27:11 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			247 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			247 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| x-transcoder: &transcoder-base
 | |
|   build:
 | |
|     context: ./transcoder
 | |
|     dockerfile: Dockerfile.dev
 | |
|   networks:
 | |
|     default:
 | |
|       aliases:
 | |
|         - transcoder
 | |
|   ports:
 | |
|     - "7666:7666"
 | |
|   restart: on-failure
 | |
|   cpus: 1
 | |
|   env_file:
 | |
|     - ./.env
 | |
|   environment:
 | |
|     - GOCODER_PREFIX=/video
 | |
|   volumes:
 | |
|     - ./transcoder:/app
 | |
|     - ${LIBRARY_ROOT}:/video:ro
 | |
|     - ${CACHE_ROOT}:/cache
 | |
|     - metadata:/metadata
 | |
| 
 | |
| services:
 | |
|   back:
 | |
|     build:
 | |
|       context: ./back
 | |
|       dockerfile: Dockerfile.dev
 | |
|     ports:
 | |
|       - "5000:5000"
 | |
|     restart: on-failure
 | |
|     environment:
 | |
|       - TRANSCODER_URL=${TRANSCODER_URL:-http://transcoder:7666/video}
 | |
|       - KYOO_PREFIX=/api
 | |
|     env_file:
 | |
|       - ./.env
 | |
|     depends_on:
 | |
|       postgres:
 | |
|         condition: service_healthy
 | |
|       meilisearch:
 | |
|         condition: service_healthy
 | |
|       rabbitmq:
 | |
|         condition: service_healthy
 | |
|       migrations:
 | |
|         condition: service_completed_successfully
 | |
|     volumes:
 | |
|       - ./back:/app
 | |
|       - /app/out/
 | |
|       - kyoo:/metadata
 | |
|     labels:
 | |
|       - "traefik.enable=true"
 | |
|       - "traefik.http.routers.api.rule=PathPrefix(`/api/`)"
 | |
| 
 | |
|   migrations:
 | |
|     build:
 | |
|       context: ./back
 | |
|       dockerfile: Dockerfile.migrations
 | |
|     restart: "no"
 | |
|     depends_on:
 | |
|       postgres:
 | |
|         condition: service_healthy
 | |
|     env_file:
 | |
|       - ./.env
 | |
| 
 | |
|   front:
 | |
|     build:
 | |
|       context: ./front
 | |
|       dockerfile: Dockerfile.dev
 | |
|     volumes:
 | |
|       - ./front:/app
 | |
|       - /app/.yarn
 | |
|       - /app/node_modules
 | |
|       - /app/apps/mobile/node_modules
 | |
|       - /app/apps/web/.next/
 | |
|       - /app/apps/mobile/.expo/
 | |
|     ports:
 | |
|       - "3000:3000"
 | |
|       - "8081:8081"
 | |
|     restart: on-failure
 | |
|     environment:
 | |
|       - KYOO_URL=${KYOO_URL:-http://back:5000/api}
 | |
|     labels:
 | |
|       - "traefik.enable=true"
 | |
|       - "traefik.http.routers.front.rule=PathPrefix(`/`)"
 | |
| 
 | |
|   auth:
 | |
|     build:
 | |
|       context: ./auth
 | |
|       dockerfile: Dockerfile.dev
 | |
|     restart: on-failure
 | |
|     depends_on:
 | |
|       postgres:
 | |
|         condition: service_healthy
 | |
|     ports:
 | |
|       - "4568:4568"
 | |
|     env_file:
 | |
|       - ./.env
 | |
|     environment:
 | |
|       - KEIBI_PREFIX=/auth
 | |
|     volumes:
 | |
|       - ./auth:/app
 | |
|     labels:
 | |
|       - "traefik.enable=true"
 | |
|       - "traefik.http.routers.auth.rule=PathPrefix(`/auth/`)"
 | |
| 
 | |
|   scanner:
 | |
|     build: ./scanner
 | |
|     restart: on-failure
 | |
|     depends_on:
 | |
|       back:
 | |
|         condition: service_healthy
 | |
|     env_file:
 | |
|       - ./.env
 | |
|     environment:
 | |
|       - KYOO_URL=${KYOO_URL:-http://back:5000/api}
 | |
|     volumes:
 | |
|       - ${LIBRARY_ROOT}:/video:ro
 | |
| 
 | |
|   matcher:
 | |
|     build: ./scanner
 | |
|     command: matcher
 | |
|     restart: on-failure
 | |
|     depends_on:
 | |
|       back:
 | |
|         condition: service_healthy
 | |
|     env_file:
 | |
|       - ./.env
 | |
|     environment:
 | |
|       - KYOO_URL=${KYOO_URL:-http://back:5000/api}
 | |
| 
 | |
|   autosync:
 | |
|     build: ./autosync
 | |
|     restart: on-failure
 | |
|     depends_on:
 | |
|       rabbitmq:
 | |
|         condition: service_healthy
 | |
|     env_file:
 | |
|       - ./.env
 | |
| 
 | |
|   transcoder:
 | |
|     <<: *transcoder-base
 | |
|     profiles: ['', 'cpu']
 | |
| 
 | |
|   transcoder-nvidia:
 | |
|     <<: *transcoder-base
 | |
|     deploy:
 | |
|       resources:
 | |
|         reservations:
 | |
|           devices:
 | |
|             - capabilities: [gpu]
 | |
|               driver: cdi
 | |
|               device_ids:
 | |
|                 - nvidia.com/gpu=all
 | |
|     environment:
 | |
|       - GOCODER_PREFIX=/video
 | |
|       - GOCODER_HWACCEL=nvidia
 | |
|     profiles: ['nvidia']
 | |
| 
 | |
|   transcoder-vaapi:
 | |
|     <<: *transcoder-base
 | |
|     devices:
 | |
|       - /dev/dri:/dev/dri
 | |
|     environment:
 | |
|       - GOCODER_PREFIX=/video
 | |
|       - GOCODER_HWACCEL=vaapi
 | |
|       - GOCODER_VAAPI_RENDERER=${GOCODER_VAAPI_RENDERER:-/dev/dri/renderD128}
 | |
|     profiles: ['vaapi']
 | |
|   # qsv is the same setup as vaapi but with the hwaccel env var different
 | |
|   transcoder-qsv:
 | |
|     <<: *transcoder-base
 | |
|     devices:
 | |
|       - /dev/dri:/dev/dri
 | |
|     environment:
 | |
|       - GOCODER_PREFIX=/video
 | |
|       - GOCODER_HWACCEL=qsv
 | |
|       - GOCODER_VAAPI_RENDERER=${GOCODER_VAAPI_RENDERER:-/dev/dri/renderD128}
 | |
|     profiles: ['qsv']
 | |
| 
 | |
|   traefik:
 | |
|     image: traefik:v3.2
 | |
|     restart: on-failure
 | |
|     command:
 | |
|       - "--providers.docker=true"
 | |
|       - "--providers.docker.exposedbydefault=false"
 | |
|       - "--entryPoints.web.address=:8901"
 | |
|       - "--accesslog=true"
 | |
|     ports:
 | |
|       - "8901:8901"
 | |
|     volumes:
 | |
|       - "/var/run/docker.sock:/var/run/docker.sock:ro"
 | |
| 
 | |
|   postgres:
 | |
|     image: postgres:15
 | |
|     restart: on-failure
 | |
|     env_file:
 | |
|       - ./.env
 | |
|     volumes:
 | |
|       - db:/var/lib/postgresql/data
 | |
|     ports:
 | |
|       - "5432:5432"
 | |
|     environment:
 | |
|      - POSTGRES_HOST_AUTH_METHOD=trust
 | |
|     command: ["postgres", "-c", "log_statement=all"]
 | |
|     healthcheck:
 | |
|       test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
 | |
|       interval: 5s
 | |
|       timeout: 5s
 | |
|       retries: 5
 | |
| 
 | |
|   meilisearch:
 | |
|     image: getmeili/meilisearch:v1.4
 | |
|     restart: on-failure
 | |
|     ports:
 | |
|       - "7700:7700"
 | |
|     volumes:
 | |
|       - search:/meili_data
 | |
|     environment:
 | |
|       - MEILI_ENV=development
 | |
|     env_file:
 | |
|       - .env
 | |
|     healthcheck:
 | |
|       test: ["CMD", "wget", "--no-verbose", "--spider", "http://meilisearch:7700/health"]
 | |
|       interval: 30s
 | |
|       timeout: 5s
 | |
|       retries: 5
 | |
| 
 | |
|   rabbitmq:
 | |
|     image: rabbitmq:4-management-alpine
 | |
|     restart: on-failure
 | |
|     environment:
 | |
|       - RABBITMQ_DEFAULT_USER=${RABBITMQ_DEFAULT_USER}
 | |
|       - RABBITMQ_DEFAULT_PASS=${RABBITMQ_DEFAULT_PASS}
 | |
|     ports:
 | |
|       - 5672:5672
 | |
|       - 15672:15672
 | |
|     healthcheck:
 | |
|       test: rabbitmq-diagnostics -q ping
 | |
|       interval: 30s
 | |
|       timeout: 10s
 | |
|       retries: 5
 | |
|       start_period: 10s
 | |
| 
 | |
| volumes:
 | |
|   kyoo:
 | |
|   db:
 | |
|   metadata:
 | |
|   search:
 |