# Coolify entrypoint for XFlow. In Coolify UI set Compose file = docker-compose.coolify.yml # Do not publish host ports — Traefik reaches the container on 3000 internally. version: '3.8' services: site-xflow: container_name: '${APP_NAME:-xflow}' image: '${APP_NAME:-xflow}:latest' build: context: . dockerfile: Dockerfile.coolify args: SITE_URL: '${SITE_URL:-http://localhost:3000}' DATABASE_URL: '${DATABASE_URL:-postgresql://xflow:${POSTGRES_PASSWORD}@db:5432/xflow}' REDIS_URL: '${REDIS_URL:-redis://redis:6379}' JWT_SECRET: '${JWT_SECRET:-super-secret-jwt-key}' OPEN_ROUTER_API_KEY: '${OPEN_ROUTER_API_KEY:-}' NUXT_OPEN_ROUTER_API_KEY: '${OPEN_ROUTER_API_KEY:-}' NUXT_QWEN_API_KEY: '${NUXT_QWEN_API_KEY:-}' DEEPSEEK_API_KEY: '${DEEPSEEK_API_KEY:-}' FIREBASE_API_KEY: '${FIREBASE_API_KEY:-}' FIREBASE_AUTH_DOMAIN: '${FIREBASE_AUTH_DOMAIN:-}' FIREBASE_PROJECT_ID: '${FIREBASE_PROJECT_ID:-}' FIREBASE_STORAGE_BUCKET: '${FIREBASE_STORAGE_BUCKET:-}' FIREBASE_MESSAGING_SENDER_ID: '${FIREBASE_MESSAGING_SENDER_ID:-}' FIREBASE_APP_ID: '${FIREBASE_APP_ID:-}' TZ: '${TZ:-Asia/Almaty}' depends_on: - db - redis restart: unless-stopped expose: - '3000' environment: NODE_ENV: '${NODE_ENV:-development}' HUSKY: '0' HOST: '0.0.0.0' PORT: '3000' NUXT_HOST: '0.0.0.0' NUXT_PORT: '3000' NITRO_HOST: '0.0.0.0' NITRO_PORT: '3000' TZ: '${TZ:-Asia/Almaty}' SITE_URL: '${SITE_URL:-http://localhost:3000}' NUXT_SITE_URL: '${SITE_URL:-http://localhost:3000}' NUXT_PUBLIC_SITE_URL: '${SITE_URL:-http://localhost:3000}' POSTGRES_USER: '${POSTGRES_USER:-xflow}' POSTGRES_DB: '${POSTGRES_DB:-xflow}' POSTGRES_PASSWORD: '${POSTGRES_PASSWORD}' DATABASE_URL: '${DATABASE_URL:-postgresql://xflow:${POSTGRES_PASSWORD}@db:5432/xflow}' NUXT_DATABASE_URL: '${DATABASE_URL:-postgresql://xflow:${POSTGRES_PASSWORD}@db:5432/xflow}' REDIS_URL: '${REDIS_URL:-redis://redis:6379}' NUXT_REDIS_URL: '${REDIS_URL:-redis://redis:6379}' JWT_SECRET: '${JWT_SECRET:-super-secret-jwt-key}' NUXT_JWT_SECRET: '${JWT_SECRET:-super-secret-jwt-key}' OPEN_ROUTER_API_KEY: '${OPEN_ROUTER_API_KEY:-}' NUXT_OPEN_ROUTER_API_KEY: '${OPEN_ROUTER_API_KEY:-}' NUXT_QWEN_API_KEY: '${NUXT_QWEN_API_KEY:-}' DEEPSEEK_API_KEY: '${DEEPSEEK_API_KEY:-}' FIREBASE_API_KEY: '${FIREBASE_API_KEY:-}' NUXT_FIREBASE_API_KEY: '${FIREBASE_API_KEY:-}' NUXT_PUBLIC_FIREBASE_API_KEY: '${FIREBASE_API_KEY:-}' FIREBASE_AUTH_DOMAIN: '${FIREBASE_AUTH_DOMAIN:-}' NUXT_FIREBASE_AUTH_DOMAIN: '${FIREBASE_AUTH_DOMAIN:-}' NUXT_PUBLIC_FIREBASE_AUTH_DOMAIN: '${FIREBASE_AUTH_DOMAIN:-}' FIREBASE_PROJECT_ID: '${FIREBASE_PROJECT_ID:-}' NUXT_FIREBASE_PROJECT_ID: '${FIREBASE_PROJECT_ID:-}' NUXT_PUBLIC_FIREBASE_PROJECT_ID: '${FIREBASE_PROJECT_ID:-}' FIREBASE_STORAGE_BUCKET: '${FIREBASE_STORAGE_BUCKET:-}' NUXT_FIREBASE_STORAGE_BUCKET: '${FIREBASE_STORAGE_BUCKET:-}' NUXT_PUBLIC_FIREBASE_STORAGE_BUCKET: '${FIREBASE_STORAGE_BUCKET:-}' FIREBASE_MESSAGING_SENDER_ID: '${FIREBASE_MESSAGING_SENDER_ID:-}' NUXT_FIREBASE_MESSAGING_SENDER_ID: '${FIREBASE_MESSAGING_SENDER_ID:-}' NUXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID: '${FIREBASE_MESSAGING_SENDER_ID:-}' FIREBASE_APP_ID: '${FIREBASE_APP_ID:-}' NUXT_FIREBASE_APP_ID: '${FIREBASE_APP_ID:-}' NUXT_PUBLIC_FIREBASE_APP_ID: '${FIREBASE_APP_ID:-}' db: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_USER: '${POSTGRES_USER:-xflow}' POSTGRES_PASSWORD: '${POSTGRES_PASSWORD:?}' POSTGRES_DB: '${POSTGRES_DB:-xflow}' volumes: - xflow-pg-data:/var/lib/postgresql/data redis: image: redis:7.2-alpine restart: unless-stopped command: redis-server --appendonly yes volumes: - xflow-redis-data:/data volumes: xflow-pg-data: xflow-redis-data: