Files
lingxi-web/docker-compose.yml

108 lines
4.1 KiB
YAML

name: lingxi-crossborder
services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_USER: ${LX_DB_USER:-lingxi}
POSTGRES_PASSWORD: ${LX_DB_PASSWORD:?LX_DB_PASSWORD is required}
POSTGRES_DB: ${LX_DB_NAME:-lingxi_crossborder}
volumes:
- lingxi_pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${LX_DB_USER:-lingxi} -d ${LX_DB_NAME:-lingxi_crossborder}"]
interval: 5s
timeout: 5s
retries: 10
restart: unless-stopped
whatsapp-gateway:
build:
context: ./whatsapp-gateway
args:
DEBIAN_MIRROR: ${DEBIAN_MIRROR:-https://deb.debian.org/debian}
DEBIAN_SECURITY_MIRROR: ${DEBIAN_SECURITY_MIRROR:-https://deb.debian.org/debian-security}
environment:
PORT: 3200
DATA_DIR: /data
WHATSAPP_GATEWAY_TOKEN: ${WHATSAPP_GATEWAY_TOKEN:?WHATSAPP_GATEWAY_TOKEN is required}
WHATSAPP_DEFAULT_PROXY_URL: ${WHATSAPP_DEFAULT_PROXY_URL:-}
LOG_LEVEL: ${WHATSAPP_LOG_LEVEL:-info}
volumes:
- lingxi_whatsapp_data:/data
dns:
- 1.1.1.1
- 8.8.8.8
restart: unless-stopped
api:
build:
context: ./server
environment:
PORT: 3100
DATABASE_URL: postgresql://${LX_DB_USER:-lingxi}:${LX_DB_PASSWORD}@postgres:5432/${LX_DB_NAME:-lingxi_crossborder}
JWT_SECRET: ${LX_JWT_SECRET:?LX_JWT_SECRET is required}
DEEPSEEK_BASE_URL: https://api.deepseek.com/anthropic
DEEPSEEK_MODEL: ${DEEPSEEK_MODEL:-deepseek-v4-flash}
DEEPSEEK_API_KEY: ${DEEPSEEK_API_KEY:?DEEPSEEK_API_KEY is required}
TELEGRAM_GATEWAY_URL: ${TELEGRAM_GATEWAY_URL:-http://host.docker.internal:3000/api}
TELEGRAM_GATEWAY_TOKEN: ${TELEGRAM_GATEWAY_TOKEN:?TELEGRAM_GATEWAY_TOKEN is required}
TELEGRAM_GATEWAY_TENANT_ID: ${TELEGRAM_GATEWAY_TENANT_ID:?TELEGRAM_GATEWAY_TENANT_ID is required}
TELEGRAM_GATEWAY_SERVICE_EMAIL: ${TELEGRAM_GATEWAY_SERVICE_EMAIL:?TELEGRAM_GATEWAY_SERVICE_EMAIL is required}
TELEGRAM_GATEWAY_SERVICE_PASSWORD: ${TELEGRAM_GATEWAY_SERVICE_PASSWORD:?TELEGRAM_GATEWAY_SERVICE_PASSWORD is required}
TELEGRAM_GATEWAY_ACCOUNT_ID: ${TELEGRAM_GATEWAY_ACCOUNT_ID:-}
TELEGRAM_WEBHOOK_SECRET: ${TELEGRAM_WEBHOOK_SECRET:?TELEGRAM_WEBHOOK_SECRET is required}
WHATSAPP_GATEWAY_URL: http://whatsapp-gateway:3200
WHATSAPP_GATEWAY_TOKEN: ${WHATSAPP_GATEWAY_TOKEN:?WHATSAPP_GATEWAY_TOKEN is required}
WHATSAPP_WEBHOOK_SECRET: ${WHATSAPP_WEBHOOK_SECRET:?WHATSAPP_WEBHOOK_SECRET is required}
WHATSAPP_WEBHOOK_BASE_URL: ${WHATSAPP_WEBHOOK_BASE_URL:-http://api:3100}
PUBLIC_WEBHOOK_BASE_URL: ${PUBLIC_WEBHOOK_BASE_URL:-http://host.docker.internal:8088}
APP_PUBLIC_URL: ${APP_PUBLIC_URL:-http://127.0.0.1:8088}
SMTP_HOST: ${SMTP_HOST:-}
SMTP_PORT: ${SMTP_PORT:-587}
SMTP_SECURE: ${SMTP_SECURE:-false}
SMTP_USER: ${SMTP_USER:-}
SMTP_PASSWORD: ${SMTP_PASSWORD:-}
SMTP_FROM: ${SMTP_FROM:-}
EMAIL_CREDENTIAL_KEY: ${EMAIL_CREDENTIAL_KEY:-}
EMAIL_POLL_MS: ${EMAIL_POLL_MS:-30000}
STRIPE_SECRET_KEY: ${STRIPE_SECRET_KEY:-}
STRIPE_PRICE_LITE: ${STRIPE_PRICE_LITE:-}
STRIPE_PRICE_STANDARD: ${STRIPE_PRICE_STANDARD:-}
STRIPE_PRICE_PRO: ${STRIPE_PRICE_PRO:-}
STRIPE_PRICE_GROWTH: ${STRIPE_PRICE_GROWTH:-}
extra_hosts:
- "host.docker.internal:host-gateway"
dns:
- 1.1.1.1
- 8.8.8.8
depends_on:
postgres:
condition: service_healthy
whatsapp-gateway:
condition: service_healthy
healthcheck:
test: ["CMD", "node", "-e", "fetch('http://127.0.0.1:3100/health/ready').then(r=>{if(!r.ok)process.exit(1)}).catch(()=>process.exit(1))"]
interval: 10s
timeout: 5s
retries: 10
start_period: 10s
restart: unless-stopped
web:
build:
context: .
dockerfile: Dockerfile
args:
FFMPEG_BINARIES_URL: ${FFMPEG_BINARIES_URL:-https://github.com/eugeneware/ffmpeg-static/releases/download}
ports:
- "${LX_WEB_PORT:-8088}:80"
depends_on:
api:
condition: service_healthy
restart: unless-stopped
volumes:
lingxi_pgdata:
lingxi_whatsapp_data: