53 lines
1.6 KiB
YAML
53 lines
1.6 KiB
YAML
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
|
|
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', 'wget', '-q', '--spider', 'http://localhost:3000/api/healthcheck']
|
|
interval: 15s
|
|
timeout: 2s
|
|
retries: 2
|
|
|
|
networks:
|
|
proxy-net:
|
|
external: true |