microtecflix/docker-stack.yml

79 lines
2.7 KiB
YAML

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
volumes:
- appdata-microtecflix:/app/data
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"
- "traefik.http.routers.microtecflix-student.rule=Host(`estudo.microtecinformaticacurso.com.br`)"
- "traefik.http.routers.microtecflix-student.entrypoints=websecure"
- "traefik.http.routers.microtecflix-student.tls.certresolver=leresolver"
- "traefik.http.services.microtecflix-student.loadbalancer.server.port=3000"
- "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.certresolver=leresolver"
- "traefik.http.services.microtecflix-admin.loadbalancer.server.port=3000"
- "traefik.docker.network=network_public"
volumes:
pgdata-microtecflix:
appdata-microtecflix:
networks:
microtecflix-net:
driver: overlay
network_public:
external: true