name: openmonetis services: db: image: 'postgres:18-alpine' container_name: openmonetis_postgres restart: unless-stopped environment: POSTGRES_USER: '${POSTGRES_USER:-openmonetis}' POSTGRES_PASSWORD: '${POSTGRES_PASSWORD:-openmonetis_dev_password}' POSTGRES_DB: '${POSTGRES_DB:-openmonetis_db}' PGDATA: /var/lib/postgresql/data POSTGRES_INITDB_ARGS: '-E UTF8 --locale=C' ports: - '${DB_PORT:-5432}:5432' volumes: - 'postgres_data:/var/lib/postgresql/data' - './scripts/postgres/init.sql:/docker-entrypoint-initdb.d/init.sql:ro' healthcheck: test: - CMD-SHELL - 'pg_isready -U ${POSTGRES_USER:-openmonetis} -d ${POSTGRES_DB:-openmonetis_db}' interval: 10s timeout: 5s retries: 5 start_period: 10s networks: - openmonetis_network app: build: context: . dockerfile: Dockerfile container_name: openmonetis_app restart: unless-stopped ports: - '${APP_PORT:-3000}:3000' environment: NODE_ENV: production DATABASE_URL: '${DATABASE_URL}' BETTER_AUTH_SECRET: '${BETTER_AUTH_SECRET}' BETTER_AUTH_URL: '${BETTER_AUTH_URL:-http://localhost:3000}' RESEND_API_KEY: '${RESEND_API_KEY:-}' RESEND_FROM_EMAIL: '${RESEND_FROM_EMAIL:-}' GOOGLE_CLIENT_ID: '${GOOGLE_CLIENT_ID:-}' GOOGLE_CLIENT_SECRET: '${GOOGLE_CLIENT_SECRET:-}' GITHUB_CLIENT_ID: '${GITHUB_CLIENT_ID:-}' GITHUB_CLIENT_SECRET: '${GITHUB_CLIENT_SECRET:-}' ANTHROPIC_API_KEY: '${ANTHROPIC_API_KEY:-}' OPENAI_API_KEY: '${OPENAI_API_KEY:-}' GOOGLE_GENERATIVE_AI_API_KEY: '${GOOGLE_GENERATIVE_AI_API_KEY:-}' OPENROUTER_API_KEY: '${OPENROUTER_API_KEY:-}' depends_on: db: condition: service_healthy networks: - openmonetis_network entrypoint: - /bin/sh - '-c' command: - "echo \"🚀 Aguardando banco de dados...\"\nsleep 5\n\necho \"📦 Rodando migrations...\"\npnpm db:push || echo \"⚠️ Migrations falharam ou já estão atualizadas\"\n\necho \"✅ Iniciando aplicação Next.js...\"\nnode server.js\n" healthcheck: test: - CMD - wget - '--quiet' - '--tries=1' - '--spider' - 'http://localhost:3000/api/health' interval: 30s timeout: 10s retries: 3 start_period: 40s volumes: postgres_data: name: openmonetis_postgres_data driver: local networks: openmonetis_network: name: openmonetis_network driver: bridge