version: '3.8' services: # ============================================================= # POSTGRESQL — Banco de Dados do MicrotecFlix (Dedicado) # ============================================================= postgres-microtecflix: image: postgres:16-alpine restart: always environment: POSTGRES_DB: microtecflix POSTGRES_USER: microtecflix_user POSTGRES_PASSWORD: MicrotecFlixSecurePass2026! ports: - "5435:5432" # Porta 5435 para evitar conflitos com outros Postgres (ex: AgendaPRO 5432) volumes: - pgdata-microtecflix:/var/lib/postgresql/data networks: - microtecflix-net healthcheck: test: ["CMD-SHELL", "pg_isready -U microtecflix_user -d microtecflix"] interval: 10s timeout: 5s retries: 5 deploy: replicas: 1 restart_policy: condition: on-failure # ============================================================= # MICROTECFLIX WEB APP — Plataforma de Cursos (Aluno + Admin) # ============================================================= microtecflix: image: microtecflix-app:local restart: always depends_on: - postgres-microtecflix environment: - NODE_ENV=production - PORT=3000 - DATABASE_URL=postgresql://microtecflix_user:MicrotecFlixSecurePass2026!@postgres-microtecflix:5432/microtecflix - JWT_SECRET=microtecflix_jwt_secret_key_2026_super_secure - ASAAS_ENVIRONMENT=sandbox networks: - microtecflix-net - network_public deploy: replicas: 1 update_config: parallelism: 1 delay: 10s order: start-first restart_policy: condition: on-failure max_attempts: 3 labels: - "traefik.enable=true" # Painel do Aluno - "traefik.http.routers.microtecflix-student.rule=Host(`estudo.microtecinformaticacurso.com.br`)" - "traefik.http.routers.microtecflix-student.entrypoints=websecure" - "traefik.http.routers.microtecflix-student.tls=true" - "traefik.http.routers.microtecflix-student.tls.certresolver=leresolver" - "traefik.http.routers.microtecflix-student.service=microtecflix-student" - "traefik.http.services.microtecflix-student.loadbalancer.server.port=3000" # Painel Admin - "traefik.http.routers.microtecflix-admin.rule=Host(`admin-estudo.microtecinformaticacurso.com.br`)" - "traefik.http.routers.microtecflix-admin.entrypoints=websecure" - "traefik.http.routers.microtecflix-admin.tls=true" - "traefik.http.routers.microtecflix-admin.tls.certresolver=leresolver" - "traefik.http.routers.microtecflix-admin.service=microtecflix-admin" - "traefik.http.services.microtecflix-admin.loadbalancer.server.port=3000" - "traefik.docker.network=network_public" volumes: pgdata-microtecflix: networks: microtecflix-net: driver: overlay network_public: external: true