Files
justvitamin/docker-compose.yml
Omair Saleh 3f2b6b6188 v3: PostgreSQL backend — 20K rows seeded, server-side SQL filtering
- Added PostgreSQL 16 Alpine service to Docker Swarm stack
- db.py: schema for 17 tables, auto-seed from jv_data.json on first boot
- /api/dashboard/data?start=&end= — server-side SQL filtering
  All Time: 0.43s (was 4MB JSON download stuck loading)
  Filtered (12mo): 0.20s with ~90% less data transferred
- Dashboard HTML patched: calls API instead of static JSON
- Integer casting for IsNewCustomer/HasDiscount/IsFreeShipping
- Advisory lock prevents race condition during parallel worker startup
- Returning Revenue now shows correctly: £14.5M (75% of total)
2026-03-02 20:24:15 +08:00

55 lines
1.3 KiB
YAML

version: "3.8"
services:
justvitamin:
image: justvitamin:latest
build: .
environment:
- GEMINI_API_KEY=AIzaSyCHnesXLjPw-UgeZaQotut66bgjFdvy12E
- DATABASE_URL=postgresql://jv:jvpass@tasks.db:5432/justvitamin
volumes:
- jv-generated:/app/generated
networks:
- dokploy-network
- jv-internal
depends_on:
- db
deploy:
labels:
- "traefik.enable=true"
- "traefik.http.routers.justvitamin.rule=Host(`justvitamin.quikcue.com`)"
- "traefik.http.routers.justvitamin.entrypoints=websecure"
- "traefik.http.routers.justvitamin.tls.certResolver=letsencrypt"
- "traefik.http.services.justvitamin.loadbalancer.server.port=5050"
replicas: 1
restart_policy:
condition: on-failure
db:
image: postgres:16-alpine
environment:
- POSTGRES_USER=jv
- POSTGRES_PASSWORD=jvpass
- POSTGRES_DB=justvitamin
volumes:
- jv-pgdata:/var/lib/postgresql/data
networks:
- jv-internal
deploy:
replicas: 1
restart_policy:
condition: on-failure
resources:
limits:
memory: 512M
volumes:
jv-generated:
jv-pgdata:
networks:
dokploy-network:
external: true
jv-internal:
driver: overlay