services: zipline-db: image: postgres:16 container_name: zipline-db restart: unless-stopped networks: - proxy-net env_file: - .env environment: POSTGRES_USER: ${POSTGRESQL_USER:-zipline} POSTGRES_PASSWORD: ${POSTGRESQL_PASSWORD:?POSTGRESSQL_PASSWORD is required} POSTGRES_DB: ${POSTGRESQL_DB:-zipline} volumes: - /mnt/appdata/zipline/data/pgdata:/var/lib/postgresql/data healthcheck: test: ['CMD', 'pg_isready', '-U', 'zipline'] interval: 10s timeout: 5s retries: 5 zipline: image: ghcr.io/diced/zipline container_name: zipline restart: unless-stopped env_file: - .env networks: - proxy-net environment: - DATABASE_URL=postgres://zipline:${POSTGRESQL_PASSWORD}@zipline-db:5432/${POSTGRESQL_DB:-zipline} depends_on: zipline-db: condition: service_healthy volumes: - '/mnt/appdata/zipline/uploads:/zipline/uploads' - '/mnt/appdata/zipline/public:/zipline/public' - '/mnt/appdata/zipline/themes:/zipline/themes' labels: - "traefik.enable=true" - "traefik.http.routers.zipline.entrypoints=websecure" - "traefik.http.routers.zipline.rule=Host(`zipline.castaldifamily.com`)" - "traefik.http.routers.zipline.tls=true" - "traefik.http.routers.zipline.tls.certresolver=cloudflare" - "traefik.http.services.zipline.loadbalancer.server.port=3000" healthcheck: test: ["CMD-SHELL", "curl -f http://localhost:3000/api/healthcheck || exit 1"] interval: 10s timeout: 5s retries: 3 networks: proxy-net: external: true