90 lines
2.1 KiB
YAML
90 lines
2.1 KiB
YAML
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"
|
|
- "traefik.http.routers.web.rule=Host(`${DOMAIN}`)"
|
|
- "traefik.http.routers.web.entrypoints=websecure"
|
|
- "traefik.http.routers.web.tls.certresolver=le"
|
|
- "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
|