# 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:-xflow_db_secret_pass}@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:-AIzaSyDP1IxP7ntZ5k3agzulPjW_dDsQMKsMPck}' FIREBASE_AUTH_DOMAIN: '${FIREBASE_AUTH_DOMAIN:-xflow-d8dd5.firebaseapp.com}' FIREBASE_PROJECT_ID: '${FIREBASE_PROJECT_ID:-xflow-d8dd5}' FIREBASE_STORAGE_BUCKET: '${FIREBASE_STORAGE_BUCKET:-xflow-d8dd5.firebasestorage.app}' FIREBASE_MESSAGING_SENDER_ID: '${FIREBASE_MESSAGING_SENDER_ID:-944408960366}' FIREBASE_APP_ID: '${FIREBASE_APP_ID:-1:944408960366:web:4d2cd393e85a0ca9b4357f}' 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:-xflow_db_secret_pass}' DATABASE_URL: '${DATABASE_URL:-postgresql://xflow:${POSTGRES_PASSWORD:-xflow_db_secret_pass}@db:5432/xflow}' NUXT_DATABASE_URL: '${DATABASE_URL:-postgresql://xflow:${POSTGRES_PASSWORD:-xflow_db_secret_pass}@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:-AIzaSyDP1IxP7ntZ5k3agzulPjW_dDsQMKsMPck}' NUXT_FIREBASE_API_KEY: '${FIREBASE_API_KEY:-AIzaSyDP1IxP7ntZ5k3agzulPjW_dDsQMKsMPck}' NUXT_PUBLIC_FIREBASE_API_KEY: '${FIREBASE_API_KEY:-AIzaSyDP1IxP7ntZ5k3agzulPjW_dDsQMKsMPck}' FIREBASE_AUTH_DOMAIN: '${FIREBASE_AUTH_DOMAIN:-xflow-d8dd5.firebaseapp.com}' NUXT_FIREBASE_AUTH_DOMAIN: '${FIREBASE_AUTH_DOMAIN:-xflow-d8dd5.firebaseapp.com}' NUXT_PUBLIC_FIREBASE_AUTH_DOMAIN: '${FIREBASE_AUTH_DOMAIN:-xflow-d8dd5.firebaseapp.com}' FIREBASE_PROJECT_ID: '${FIREBASE_PROJECT_ID:-xflow-d8dd5}' NUXT_FIREBASE_PROJECT_ID: '${FIREBASE_PROJECT_ID:-xflow-d8dd5}' NUXT_PUBLIC_FIREBASE_PROJECT_ID: '${FIREBASE_PROJECT_ID:-xflow-d8dd5}' FIREBASE_STORAGE_BUCKET: '${FIREBASE_STORAGE_BUCKET:-xflow-d8dd5.firebasestorage.app}' NUXT_FIREBASE_STORAGE_BUCKET: '${FIREBASE_STORAGE_BUCKET:-xflow-d8dd5.firebasestorage.app}' NUXT_PUBLIC_FIREBASE_STORAGE_BUCKET: '${FIREBASE_STORAGE_BUCKET:-xflow-d8dd5.firebasestorage.app}' FIREBASE_MESSAGING_SENDER_ID: '${FIREBASE_MESSAGING_SENDER_ID:-944408960366}' NUXT_FIREBASE_MESSAGING_SENDER_ID: '${FIREBASE_MESSAGING_SENDER_ID:-944408960366}' NUXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID: '${FIREBASE_MESSAGING_SENDER_ID:-944408960366}' FIREBASE_APP_ID: '${FIREBASE_APP_ID:-1:944408960366:web:4d2cd393e85a0ca9b4357f}' NUXT_FIREBASE_APP_ID: '${FIREBASE_APP_ID:-1:944408960366:web:4d2cd393e85a0ca9b4357f}' NUXT_PUBLIC_FIREBASE_APP_ID: '${FIREBASE_APP_ID:-1:944408960366:web:4d2cd393e85a0ca9b4357f}' db: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_USER: '${POSTGRES_USER:-xflow}' POSTGRES_PASSWORD: '${POSTGRES_PASSWORD:-xflow_db_secret_pass}' POSTGRES_DB: '${POSTGRES_DB:-xflow}' POSTGRES_HOST_AUTH_METHOD: 'trust' 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: