# ======================================================== # ARCHIVO DE DESPLIEGUE PARA COOLIFY (v4) # Hub Fiscal Facturación Electrónica DIAN UBL 2.1 # Subdominio recomendado: https://facturacion.almeira.com.co # ======================================================== version: '3.8' services: # 1. Base de datos PostgreSQL 16 Alpine postgres: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_DB: dian_hub_db POSTGRES_USER: ${POSTGRES_USER:-postgres} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-dian_secure_prod_2026} volumes: - dian_db_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres} -d dian_hub_db"] interval: 10s timeout: 5s retries: 5 networks: - dian_network # 2. Microservicio Backend (Fastify v4/v5 + TypeScript Strict) backend: build: context: . dockerfile: Dockerfile.backend restart: unless-stopped environment: PORT: 3001 HOST: 0.0.0.0 NODE_ENV: production DATABASE_URL: "postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-dian_secure_prod_2026}@postgres:5432/dian_hub_db?schema=public" API_KEY_MASTER: ${API_KEY_MASTER:-dev_master_key_innovacion_2026_secure} JWT_SECRET: ${JWT_SECRET:-super_secret_jwt_key_dian_hub_innovacion_2026} ENCRYPTION_KEY: ${ENCRYPTION_KEY:-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef} DIAN_ENVIRONMENT: ${DIAN_ENVIRONMENT:-HABILITACION} DIAN_SOFTWARE_ID: ${DIAN_SOFTWARE_ID:-d5e07b47-6aea-43cc-b38c-3c7d46b4a52f} DIAN_SOFTWARE_PIN: ${DIAN_SOFTWARE_PIN:-75319} DIAN_TEST_SET_ID: ${DIAN_TEST_SET_ID:-c48d035e-c15c-4f76-905c-efbc912389a0} depends_on: postgres: condition: service_healthy networks: - dian_network # 3. Frontend Panel (React 18 + Vite + Nginx) con Reverse Proxy integrado # Este servicio expone tanto la web como la API al subdominio configurado en Coolify frontend: build: context: . dockerfile: Dockerfile.frontend restart: unless-stopped environment: # Coolify asigna el subdominio y gestiona el certificado SSL con Traefik - COOLIFY_URL=https://facturacion.almeira.com.co depends_on: - backend networks: - dian_network volumes: dian_db_data: name: dian_hub_db_data networks: dian_network: name: dian_hub_network driver: bridge