services: pipedfrontend: image: 1337kavin/piped-frontend:latest restart: unless-stopped depends_on: - piped container_name: piped-frontend entrypoint: ash -c 'sed -i s/pipedapi.kavin.rocks/BACKEND_HOSTNAME/g /usr/share/nginx/html/assets/* && /docker-entrypoint.sh && nginx -g "daemon off;"' ytproxy: image: 1337kavin/ytproxy:latest restart: unless-stopped volumes: - ytproxy:/app/socket container_name: ytproxy piped: image: 1337kavin/piped:latest restart: unless-stopped volumes: - ./config/config.properties:/app/config.properties:ro depends_on: - postgres container_name: piped-backend varnish: image: varnish:7.0-alpine restart: unless-stopped volumes: - ./config/default.vcl:/etc/varnish/default.vcl:ro container_name: varnish depends_on: - piped healthcheck: test: ash -c "wget --no-verbose --tries=1 --spider 127.0.0.1:80/trending?region=US || (varnishreload && exit 1)" interval: 10s timeout: 10s retries: 1 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 - ytproxy:/var/run/ytproxy container_name: nginx depends_on: - piped - varnish - ytproxy - pipedfrontend postgres: image: postgres:13-alpine 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 ytproxy varnish nginx postgres watchtower volumes: ytproxy: null