services: piped-frontend: image: 1337kavin/piped-frontend:latest restart: unless-stopped depends_on: - piped environment: BACKEND_HOSTNAME: BACKEND_HOSTNAME_PLACEHOLDER container_name: piped-frontend piped-proxy: image: 1337kavin/piped-proxy:latest restart: unless-stopped environment: - UDS=1 volumes: - piped-proxy:/app/socket container_name: piped-proxy piped: image: 1337kavin/piped:latest restart: unless-stopped volumes: - ./config/config.properties:/app/config.properties:ro depends_on: - postgres container_name: piped-backend nginx: image: nginx:mainline-alpine restart: unless-stopped ports: - "8080:80" volumes: - ./config/nginx.conf:/etc/nginx/nginx.conf:ro - ./config/pipedapi.conf:/etc/nginx/conf.d/pipedapi.conf:ro - ./config/pipedproxy.conf:/etc/nginx/conf.d/pipedproxy.conf:ro - ./config/pipedfrontend.conf:/etc/nginx/conf.d/pipedfrontend.conf:ro - ./config/ytproxy.conf:/etc/nginx/snippets/ytproxy.conf:ro - piped-proxy:/var/run/ytproxy container_name: nginx depends_on: - piped - piped-proxy - pipedfrontend labels: - "traefik.enable=true" - "traefik.http.routers.piped.rule=Host(`FRONTEND_HOSTNAME`, `BACKEND_HOSTNAME`, `PROXY_HOSTNAME`)" - "traefik.http.routers.piped.entrypoints=websecure" - "traefik.http.services.piped.loadbalancer.server.port=8080" postgres: image: postgres:15 restart: unless-stopped volumes: - ./data/db:/var/lib/postgresql/data environment: - POSTGRES_DB=piped - POSTGRES_USER=piped - POSTGRES_PASSWORD=changeme container_name: postgres watchtower: image: containrrr/watchtower restart: always volumes: - /var/run/docker.sock:/var/run/docker.sock - /etc/timezone:/etc/timezone:ro environment: - WATCHTOWER_CLEANUP=true - WATCHTOWER_INCLUDE_RESTARTING=true container_name: watchtower command: piped-frontend piped-backend piped-proxy varnish nginx postgres watchtower volumes: piped-proxy: null