156166b4e5
- deploy/booking: shared Easy!Appointments stack with brand-matched wizard (flatpickr recolor, single-tenant provider hide, iframe auto-fit height reporter) - deploy/clients: per-client isolated nginx compose stacks with _template scaffold, new-client.sh, and happynails live site - deploy/backup: smb-db backup script - n8n: booking-sync workflow; onboarding tweaks - playbooks: lead-to-customer lifecycle + outreach - templates: nail-studio landing previews - backoffice: app/db/init/compose updates Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
44 lines
1.0 KiB
YAML
44 lines
1.0 KiB
YAML
services:
|
|
smb-db:
|
|
image: postgres:16-alpine
|
|
container_name: smb-db
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_DB: smbcrm
|
|
POSTGRES_USER: smbcrm
|
|
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
|
volumes:
|
|
- smb-db-data:/var/lib/postgresql/data
|
|
- ./db/init.sql:/docker-entrypoint-initdb.d/init.sql:ro
|
|
networks: [smb-net]
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U smbcrm -d smbcrm"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
smb-crm:
|
|
build: ./app
|
|
container_name: smb-crm
|
|
restart: unless-stopped
|
|
environment:
|
|
DATABASE_URL: postgresql://smbcrm:${DB_PASSWORD}@smb-db:5432/smbcrm
|
|
CRM_API_TOKEN: ${CRM_API_TOKEN}
|
|
ICS_TOKEN: ${ICS_TOKEN}
|
|
SHEET_ID: ${SHEET_ID}
|
|
GOOGLE_SA_JSON: /run/secrets/gcp-sa.json
|
|
volumes:
|
|
- ./secrets/gcp-sa.json:/run/secrets/gcp-sa.json:ro
|
|
depends_on:
|
|
smb-db:
|
|
condition: service_healthy
|
|
networks: [smb-net, proxy]
|
|
|
|
volumes:
|
|
smb-db-data:
|
|
|
|
networks:
|
|
smb-net:
|
|
proxy:
|
|
external: true
|