services: redis: image: valkey/valkey:alpine restart: unless-stopped web: image: nginx:alpine volumes: - ./app/static_collected:/app/static_collected:ro - ./app/media:/app/media:ro - ./nginx/default.nginx:/etc/nginx/conf.d/default.conf:ro - ./transmission/downloads/complete/:/transmission/downloads/complete:ro labels: - "traefik.enable=true" # Routeur HTTP (port 80) pour la redirection vers HTTPS - "traefik.http.routers.web-http.rule=Host(`${DOMAIN}`)" - "traefik.http.routers.web-http.entrypoints=web" - "traefik.http.routers.web-http.middlewares=redirect-to-https" # Middleware de redirection - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https" # Routeur HTTPS - "traefik.http.routers.web.rule=Host(`${DOMAIN}`)" - "traefik.http.routers.web.entrypoints=websecure" - "traefik.http.routers.web.tls.certresolver=le" # Port du container cible (le port d'écoute de Nginx à l’intérieur du conteneur) - "traefik.http.services.web.loadbalancer.server.port=80" ports: - "${LISTEN_PORT:-8000}:80" restart: unless-stopped networks: - web - default depends_on: - app transmission: image: linuxserver/transmission environment: - TZ=Europe/Paris - PUID=${USER_ID} - PGID=${GROUP_ID} ports: - "51414:51414" - "51414:51414/udp" volumes: - ./transmission/config:/config - ./transmission/downloads:/downloads restart: unless-stopped app: build: context: ./app dockerfile: "Dockerfile" args: puid: ${USER_ID} pgid: ${GROUP_ID} env_file: - .env volumes: - ./app:/app - ./transmission:/transmission:ro - /app/frontend/node_modules restart: unless-stopped depends_on: - redis - transmission command: > bash -c "sleep 10 && cd frontend && yarn build && cd .. && python manage.py collectstatic --noinput && python manage.py migrate && uvicorn app.asgi:application --workers 3 --host 0.0.0.0 --port 8000 --lifespan off --loop uvloop --ws websockets" # celery: # extends: # service: app # restart: unless-stopped # depends_on: # - redis # - app # command: > # bash -c "sleep 5 & celery -A app worker -E -B" event: extends: service: app restart: unless-stopped depends_on: - redis - app - transmission command: > bash -c "sleep 15 & python manage.py torrent_event" networks: web: external: true