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} BOOKING_TOKEN_SECRET: ${BOOKING_TOKEN_SECRET} SESSION_SECRET_KEY: ${SESSION_SECRET_KEY} SMTP_HOST: ${SMTP_HOST} SMTP_PORT: ${SMTP_PORT} SMTP_USERNAME: ${SMTP_USERNAME} SMTP_PASSWORD: ${SMTP_PASSWORD} MAIL_FALLBACK_FROM: ${MAIL_FALLBACK_FROM} PUBLIC_BASE_URL: ${PUBLIC_BASE_URL} OWNER_NOTIFY_WEBHOOK_URL: ${OWNER_NOTIFY_WEBHOOK_URL} depends_on: smb-db: condition: service_healthy networks: [smb-net, proxy] volumes: smb-db-data: networks: smb-net: proxy: external: true