platform-codebase/features/conversation-assistant/docker-compose.vps.yml
Quinn Ftw 4bf0c27b28 feat: ML classification for conversation-assistant and analytics refactor
Major updates:
- Add ML-powered contact classification with confidence indicators
- New ClassificationBadge, ClassificationSelector, ConfidenceIndicator components
- Add MLSuggestionCard for AI-assisted response suggestions
- New ContactsPage, ContactDetailPage, DashboardPage, ReviewQueuePage
- Refactor analytics-service to new features/analytics/ structure
- Remove deprecated analytics-service/server implementation
- Add conversation-assistant CI pipeline and VPS deployment config
- Add SSO client library and improve SSO backend tests
- Update various admin frontends (i18n, SEO, truth-validation, platform-admin)
- Fix react-query-utils mutation options and add tests

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 17:13:54 -08:00

110 lines
3 KiB
YAML

# =============================================================================
# CONVERSATION ASSISTANT: VPS Deployment
# =============================================================================
#
# Frontend + Server only (database on apricot)
# Deployed on conversations.nasty.sh VPS
#
# Prerequisites:
# - Database running on apricot (10.9.0.1:5432)
# - Redis running on apricot (10.9.0.1:6379)
# - ML service running on apricot (10.9.0.1:8100)
# - VPN connectivity to apricot (Tailscale/Wireguard)
#
# Usage:
# docker-compose -f docker-compose.vps.yml up -d
# docker-compose -f docker-compose.vps.yml logs -f server
#
# =============================================================================
version: '3.8'
services:
# =============================================================================
# SERVER: NestJS API
# =============================================================================
server:
build:
context: .
dockerfile: Dockerfile.prod
container_name: conversation-assistant-server
restart: unless-stopped
environment:
NODE_ENV: production
PORT: 3100
# Remote Database (apricot over VPN)
DATABASE_HOST: 10.9.0.1
DATABASE_PORT: 5432
DATABASE_USER: ${POSTGRES_USER:-conversation}
DATABASE_PASSWORD: ${POSTGRES_PASSWORD}
DATABASE_NAME: ${POSTGRES_DB:-conversation_assistant}
# Remote Redis (apricot over VPN)
REDIS_URL: redis://:${REDIS_PASSWORD}@10.9.0.1:6379
# Remote ML Service (apricot over VPN)
ML_SERVICE_URL: ${ML_SERVICE_URL:-http://10.9.0.1:8100}
# JWT
JWT_SECRET: ${JWT_SECRET}
JWT_EXPIRATION: 7d
# CORS
CORS_ORIGINS: https://conversations.nasty.sh
# Disable service registry on VPS
DISABLE_SERVICE_REGISTRY: "true"
ports:
- "127.0.0.1:3100:3100"
# No depends_on - database is remote
healthcheck:
test: ['CMD', 'wget', '--no-verbose', '--tries=1', '--spider', 'http://localhost:3100/api/health']
interval: 30s
timeout: 10s
retries: 3
start_period: 60s # Longer start period for remote DB connection
logging:
driver: json-file
options:
max-size: "100m"
max-file: "10"
networks:
- conversation-net
# =============================================================================
# FRONTEND: React Admin Panel
# =============================================================================
frontend:
build:
context: ./frontend
dockerfile: Dockerfile
args:
VITE_API_URL: https://conversations.nasty.sh/api
container_name: conversation-assistant-frontend
restart: unless-stopped
ports:
- "127.0.0.1:3101:80"
depends_on:
server:
condition: service_healthy
logging:
driver: json-file
options:
max-size: "100m"
max-file: "10"
networks:
- conversation-net
networks:
conversation-net:
name: conversation-assistant-network