From 443bc252643a71c0000791c7761e14478958f272 Mon Sep 17 00:00:00 2001 From: gabrielb Date: Mon, 18 May 2026 20:47:17 -0300 Subject: [PATCH] feat: adiciona portal-modumfiscal-web + Redis ao stack dev e prod MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Inclui serviços portal-modumfiscal-web (Nuxt 3 SSR, porta 3000) e portal-redis (Redis 7 Alpine, AOF) em ambos os ambientes. Adiciona portal.conf no nginx com regex wildcard para subdomínios do contribuinte, excluindo app/sistema que seguem para o backoffice. Em prod, retira *.modumfiscal.com.br do modumfiscal.conf para não bloquear o regex do portal. Co-Authored-By: Claude Opus 4.7 --- dev/docker-stack.yml | 30 ++++++++++++++++++++++++++++ dev/nginx/conf.d/portal.conf | 22 ++++++++++++++++++++ prod/docker-stack.yml | 32 ++++++++++++++++++++++++++++++ prod/nginx/conf.d/modumfiscal.conf | 2 +- prod/nginx/conf.d/portal.conf | 23 +++++++++++++++++++++ 5 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 dev/nginx/conf.d/portal.conf create mode 100644 prod/nginx/conf.d/portal.conf diff --git a/dev/docker-stack.yml b/dev/docker-stack.yml index ef893ce..265fea6 100644 --- a/dev/docker-stack.yml +++ b/dev/docker-stack.yml @@ -109,9 +109,39 @@ services: networks: - app-net + portal-modumfiscal-web: + image: git.modumsolucao.com.br/modumsolucao/portal-modumfiscal-web:latest + environment: + - NUXT_REDIS_URL=redis://portal-redis:6379 + deploy: + replicas: 1 + restart_policy: + condition: on-failure + update_config: + parallelism: 1 + delay: 10s + order: start-first + networks: + - app-net + + portal-redis: + image: redis:7-alpine + command: redis-server --appendonly yes + volumes: + - portal-redis-data:/data + deploy: + replicas: 1 + restart_policy: + condition: on-failure + update_config: + order: start-first + networks: + - app-net + networks: app-net: external: true volumes: rabbitmq-data: + portal-redis-data: diff --git a/dev/nginx/conf.d/portal.conf b/dev/nginx/conf.d/portal.conf new file mode 100644 index 0000000..7b052e0 --- /dev/null +++ b/dev/nginx/conf.d/portal.conf @@ -0,0 +1,22 @@ +upstream portal_web { + server portal-modumfiscal-web.app-net:3000; +} + +# Captura todos os subdomínios de modumfiscal.com.br exceto sistema (coberto por modumfiscal.conf) +server { + listen 8080; + listen [::]:8080; + server_name ~^(?!sistema\.)(.+)\.modumfiscal\.com\.br$; + + location / { + proxy_pass http://portal_web; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + # Necessário para SSE/streaming de resposta do Nuxt + proxy_buffering off; + proxy_read_timeout 60s; + } +} diff --git a/prod/docker-stack.yml b/prod/docker-stack.yml index c74b313..e58f7e6 100644 --- a/prod/docker-stack.yml +++ b/prod/docker-stack.yml @@ -121,9 +121,41 @@ services: networks: - app-net + portal-modumfiscal-web: + image: git.modumsolucao.com.br/modumsolucao/portal-modumfiscal-web:prod-latest + environment: + - NUXT_REDIS_URL=redis://portal-redis:6379 + deploy: + replicas: 2 + restart_policy: + condition: on-failure + delay: 30s + max_attempts: 3 + update_config: + parallelism: 1 + delay: 15s + order: start-first + networks: + - app-net + + portal-redis: + image: redis:7-alpine + command: redis-server --appendonly yes + volumes: + - portal-redis-data:/data + deploy: + replicas: 1 + restart_policy: + condition: on-failure + update_config: + order: start-first + networks: + - app-net + networks: app-net: external: true volumes: rabbitmq-data: + portal-redis-data: diff --git a/prod/nginx/conf.d/modumfiscal.conf b/prod/nginx/conf.d/modumfiscal.conf index 1138e36..203b9c8 100644 --- a/prod/nginx/conf.d/modumfiscal.conf +++ b/prod/nginx/conf.d/modumfiscal.conf @@ -9,7 +9,7 @@ upstream frontend { server { listen 80; listen [::]:80; - server_name app.modumfiscal.com.br *.modumfiscal.com.br; + server_name app.modumfiscal.com.br sistema.modumfiscal.com.br; location /api/ { proxy_pass http://core_api; diff --git a/prod/nginx/conf.d/portal.conf b/prod/nginx/conf.d/portal.conf new file mode 100644 index 0000000..db79661 --- /dev/null +++ b/prod/nginx/conf.d/portal.conf @@ -0,0 +1,23 @@ +upstream portal_web { + server portal-modumfiscal-web.app-net:3000; +} + +# Captura todos os subdomínios de modumfiscal.com.br destinados ao portal do contribuinte. +# O nginx resolve server_name mais específico primeiro: app/sistema.modumfiscal.com.br +# (em modumfiscal.conf) tem prioridade; os demais subdomínios caem aqui. +server { + listen 80; + listen [::]:80; + server_name ~^(?!app\.|sistema\.)(.+)\.modumfiscal\.com\.br$; + + location / { + proxy_pass http://portal_web; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_buffering off; + proxy_read_timeout 60s; + } +}