corrige links quebrados do README e documenta lacunas pós-limpeza
Os links de Dockerfile/Jenkinsfile/k8s apontavam para caminhos absolutos do WSL de uma máquina específica (quebrados desde o primeiro commit). Trocados por caminhos relativos. Adiciona: fluxo de build/start local de produção, passo a passo de aplicar o secret via create-secret.sh, explicação do patch em patches/ (postinstall) e nota sobre o preset node-server do nitro.
This commit is contained in:
@@ -5,25 +5,39 @@ Aplicacao TanStack Start/Node.js para registro de coleta de pedidos, usando SQL
|
|||||||
## Desenvolvimento local
|
## Desenvolvimento local
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
|
cp .env.example .env # preencha com as credenciais do seu ambiente
|
||||||
npm install
|
npm install
|
||||||
npm run dev
|
npm run dev
|
||||||
```
|
```
|
||||||
|
|
||||||
|
O `npm install` roda um `postinstall` que reaplica automaticamente o patch em `patches/` (veja "Patches de dependências" abaixo).
|
||||||
|
|
||||||
|
## Build de produção local
|
||||||
|
|
||||||
|
Para validar um build antes de mandar pro Jenkins:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm run build
|
||||||
|
node .output/server/index.mjs
|
||||||
|
```
|
||||||
|
|
||||||
|
É o mesmo comando que o `Dockerfile` roda no container final.
|
||||||
|
|
||||||
## Estrutura de deploy
|
## Estrutura de deploy
|
||||||
|
|
||||||
Este repositorio ja possui a base para subir o app como servico separado:
|
Este repositorio ja possui a base para subir o app como servico separado:
|
||||||
|
|
||||||
- [Dockerfile](/mnt/c/Users/joao.herculano/OneDrive%20-%20GRUPO%20GINSENG/Documentos/sla_separacao/Dockerfile:1)
|
- [Dockerfile](Dockerfile)
|
||||||
- [Jenkinsfile](/mnt/c/Users/joao.herculano/OneDrive%20-%20GRUPO%20GINSENG/Documentos/sla_separacao/Jenkinsfile:1)
|
- [Jenkinsfile](Jenkinsfile)
|
||||||
- [k8s/deployment.yaml](/mnt/c/Users/joao.herculano/OneDrive%20-%20GRUPO%20GINSENG/Documentos/sla_separacao/k8s/deployment.yaml:1)
|
- [k8s/deployment.yaml](k8s/deployment.yaml)
|
||||||
- [k8s/service.yaml](/mnt/c/Users/joao.herculano/OneDrive%20-%20GRUPO%20GINSENG/Documentos/sla_separacao/k8s/service.yaml:1)
|
- [k8s/service.yaml](k8s/service.yaml)
|
||||||
- [k8s/hpa.yaml](/mnt/c/Users/joao.herculano/OneDrive%20-%20GRUPO%20GINSENG/Documentos/sla_separacao/k8s/hpa.yaml:1)
|
- [k8s/hpa.yaml](k8s/hpa.yaml)
|
||||||
- [k8s/secret.example.yaml](/mnt/c/Users/joao.herculano/OneDrive%20-%20GRUPO%20GINSENG/Documentos/sla_separacao/k8s/secret.example.yaml:1)
|
- [k8s/secret.example.yaml](k8s/secret.example.yaml)
|
||||||
- [k8s/create-secret.sh](/mnt/c/Users/joao.herculano/OneDrive%20-%20GRUPO%20GINSENG/Documentos/sla_separacao/k8s/create-secret.sh:1)
|
- [k8s/create-secret.sh](k8s/create-secret.sh)
|
||||||
|
|
||||||
## Variaveis obrigatorias
|
## Variaveis obrigatorias
|
||||||
|
|
||||||
O app precisa destas variaveis no ambiente de deploy:
|
O app precisa destas variaveis no ambiente de deploy (veja `.env.example`):
|
||||||
|
|
||||||
- `DB_HOST`
|
- `DB_HOST`
|
||||||
- `DB_PORT`
|
- `DB_PORT`
|
||||||
@@ -35,6 +49,23 @@ O app precisa destas variaveis no ambiente de deploy:
|
|||||||
- `DB_SERVER_NAME`
|
- `DB_SERVER_NAME`
|
||||||
- `SESSION_SECRET`
|
- `SESSION_SECRET`
|
||||||
|
|
||||||
|
## Aplicando o secret no cluster
|
||||||
|
|
||||||
|
Com `kubectl` configurado para o namespace `ci-cd`, exporte as variaveis acima e rode:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
NAMESPACE=ci-cd SECRET_NAME=sla-separacao-env \
|
||||||
|
DB_HOST=... DB_PORT=... DB_NAME=... DB_USER=... DB_PASSWORD=... \
|
||||||
|
DB_ENCRYPT=... DB_TRUST_SERVER_CERT=... DB_SERVER_NAME=... SESSION_SECRET=... \
|
||||||
|
./k8s/create-secret.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
O script usa `kubectl apply` (idempotente) e nunca grava os valores em disco.
|
||||||
|
|
||||||
|
## Patches de dependências
|
||||||
|
|
||||||
|
`patches/@tanstack+start-server-core+*.patch` corrige um bug no `@tanstack/start-server-core`: a lib cria o middleware de CSRF padrão de forma incondicional ao carregar o módulo, o que colide com um import circular gerado pelo `nitro` no build de produção e quebra toda requisição (`createCsrfMiddleware is not a function`). O patch adia essa criação para dentro de uma função. Ele é reaplicado automaticamente pelo `postinstall` a cada `npm install`; se atualizar `@tanstack/start-server-core`, confira se o patch ainda se aplica.
|
||||||
|
|
||||||
## Antes do deploy
|
## Antes do deploy
|
||||||
|
|
||||||
Voce precisa validar estes pontos no ambiente da empresa:
|
Voce precisa validar estes pontos no ambiente da empresa:
|
||||||
@@ -50,3 +81,4 @@ Voce precisa validar estes pontos no ambiente da empresa:
|
|||||||
- O app atual usa SQL Server direto, sem API intermediaria.
|
- O app atual usa SQL Server direto, sem API intermediaria.
|
||||||
- O deploy criado aqui e separado do app Django existente.
|
- O deploy criado aqui e separado do app Django existente.
|
||||||
- O repositório nao guarda o secret real de producao; ele deve ser criado no cluster.
|
- O repositório nao guarda o secret real de producao; ele deve ser criado no cluster.
|
||||||
|
- O build de produção usa o preset `node-server` do nitro (não Cloudflare) — o `Dockerfile` roda `node .output/server/index.mjs` diretamente, então o preset precisa continuar assim.
|
||||||
|
|||||||
Reference in New Issue
Block a user