@oktis-works/cms 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold-docs.d.ts","sourceRoot":"","sources":["../src/scaffold-docs.ts"],"names":[],"mappings":"AAIA,wCAAwC;AACxC,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"scaffold-docs.d.ts","sourceRoot":"","sources":["../src/scaffold-docs.ts"],"names":[],"mappings":"AAIA,wCAAwC;AACxC,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA2LzD;AAED,sDAAsD;AACtD,eAAO,MAAM,UAAU,64FAoFtB,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,SAAS,qqGAqGrB,CAAC"}
|
package/dist/scaffold-docs.js
CHANGED
|
@@ -80,6 +80,76 @@ O \`.env\` gerado já aponta para \`localhost\`, que é onde o compose expõe as
|
|
|
80
80
|
portas do Postgres (5432) e do Redis (6379). Os apps em si rodam via
|
|
81
81
|
\`okcms start\` — o compose é só a infraestrutura.
|
|
82
82
|
|
|
83
|
+
## Produção
|
|
84
|
+
|
|
85
|
+
Em produção **não use \`okcms start\` como supervisor** — ele é conveniência
|
|
86
|
+
de dev: não reinicia filhos que morrem e mistura os logs de todos os apps num
|
|
87
|
+
único fluxo. Escolha um dos caminhos abaixo.
|
|
88
|
+
|
|
89
|
+
### Caminho 1: pm2 (processos no host)
|
|
90
|
+
|
|
91
|
+
Um processo pm2 **por app** — restart em crash, log por processo, \`pm2
|
|
92
|
+
startup\` na inicialização do servidor e \`pm2 reload\` individual
|
|
93
|
+
(zero-downtime). Requer **Bun instalado no servidor** (os apps sobem via
|
|
94
|
+
\`bunx\`).
|
|
95
|
+
|
|
96
|
+
\`\`\`js
|
|
97
|
+
// ecosystem.config.js
|
|
98
|
+
module.exports = {
|
|
99
|
+
apps: [
|
|
100
|
+
{ name: 'okcms-api', script: 'bunx', args: '@oktis-works/api', env: { NODE_ENV: 'production', PORT: 3000 } },
|
|
101
|
+
{ name: 'okcms-admin', script: 'bunx', args: '@oktis-works/admin', env: { NODE_ENV: 'production', PORT: 3001 } },
|
|
102
|
+
{ name: 'okcms-web', script: 'bunx', args: '@oktis-works/web', env: { NODE_ENV: 'production', PORT: 3002 } },
|
|
103
|
+
{ name: 'okcms-worker', script: 'bunx', args: '@oktis-works/worker', env: { NODE_ENV: 'production', WORKER_MODE: 'pm2' } },
|
|
104
|
+
],
|
|
105
|
+
};
|
|
106
|
+
\`\`\`
|
|
107
|
+
|
|
108
|
+
\`\`\`bash
|
|
109
|
+
pm2 start ecosystem.config.js
|
|
110
|
+
pm2 save && pm2 startup # sobe com o servidor
|
|
111
|
+
pm2 reload okcms-api # atualiza sem downtime (por app)
|
|
112
|
+
pm2 logs okcms-api # log por processo
|
|
113
|
+
pm2 unmonitor okcms-api && pm2 delete okcms-api # remover
|
|
114
|
+
\`\`\`
|
|
115
|
+
|
|
116
|
+
- O worker tem **modo pm2 nativo**: \`WORKER_MODE=pm2\` (cluster) combinado com
|
|
117
|
+
\`WORKER_COUNT\` e \`WORKER_CONCURRENCY\`.
|
|
118
|
+
- Como cada app é um executável independente, o \`okcms start\` não é
|
|
119
|
+
necessário em produção — o pm2 supervisoria cada um diretamente.
|
|
120
|
+
|
|
121
|
+
### Caminho 2: Docker imutável
|
|
122
|
+
|
|
123
|
+
Deploy por **imagem**: builda → sobe → troca; nunca se atualiza pacote dentro
|
|
124
|
+
de um container rodando. O template de imagem da API é multi-stage (bun,
|
|
125
|
+
\`NODE_ENV=production\`, expõe 3000) e fica em \`apps/api/Dockerfile\` no
|
|
126
|
+
repositório do OkCMS — o build precisa do contexto do monorepo:
|
|
127
|
+
|
|
128
|
+
\`\`\`bash
|
|
129
|
+
git clone https://github.com/oktis-works/cms.git
|
|
130
|
+
cd cms
|
|
131
|
+
docker build -f apps/api/Dockerfile -t okcms-api:v1 .
|
|
132
|
+
docker run -d --env-file /caminho/para/.env -p 3000:3000 okcms-api:v1
|
|
133
|
+
\`\`\`
|
|
134
|
+
|
|
135
|
+
- **Atualização** = build da imagem nova + subir + desligar a antiga;
|
|
136
|
+
**rollback** = voltar à imagem anterior (tague cada build).
|
|
137
|
+
- Postgres/Redis de produção: serviços gerenciados ou containers próprios com
|
|
138
|
+
volume e backup — não use o \`docker-compose.yml\` de dev.
|
|
139
|
+
- **Migração como passo de deploy**: \`okcms db:migrate\` antes de subir a
|
|
140
|
+
versão nova da aplicação.
|
|
141
|
+
|
|
142
|
+
### Checklist (ambos os caminhos)
|
|
143
|
+
|
|
144
|
+
- [ ] \`NODE_ENV=production\` e \`JWT_SECRET\` forte e único
|
|
145
|
+
- [ ] \`.env\` fora do versionamento; credenciais nunca em \`okcms.config.json\`
|
|
146
|
+
- [ ] Proxy reverso com TLS (nginx/caddy) na frente de api/admin/web
|
|
147
|
+
- [ ] Versões fixas no \`package.json\` do projeto (nada de \`@latest\` em deploy)
|
|
148
|
+
- [ ] \`okcms db:migrate\` no pipeline de deploy e \`okcms db:backup\` agendado
|
|
149
|
+
- [ ] Redis real em produção (as filas do worker não funcionam sem Redis)
|
|
150
|
+
- [ ] \`okcms doctor\` verde no ambiente de destino
|
|
151
|
+
- [ ] Logs com destino (pm2 logrotate, ou stdout do container coletado)
|
|
152
|
+
|
|
83
153
|
## Comandos da CLI
|
|
84
154
|
|
|
85
155
|
| Comando | O que faz |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold-docs.js","sourceRoot":"","sources":["../src/scaffold-docs.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,wEAAwE;AACxE,gFAAgF;AAEhF,wCAAwC;AACxC,MAAM,UAAU,aAAa,CAAC,WAAmB;IAC/C,OAAO,KAAK,WAAW
|
|
1
|
+
{"version":3,"file":"scaffold-docs.js","sourceRoot":"","sources":["../src/scaffold-docs.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,wEAAwE;AACxE,gFAAgF;AAEhF,wCAAwC;AACxC,MAAM,UAAU,aAAa,CAAC,WAAmB;IAC/C,OAAO,KAAK,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyLxB,CAAC;AACF,CAAC;AAED,sDAAsD;AACtD,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoFzB,CAAC;AAEF,mDAAmD;AACnD,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqGxB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oktis-works/cms",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -19,11 +19,11 @@
|
|
|
19
19
|
"clean": "rm -rf dist tsconfig.tsbuildinfo"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@oktis-works/config": "0.1.
|
|
23
|
-
"@oktis-works/core": "0.1.
|
|
24
|
-
"@oktis-works/database": "0.1.
|
|
25
|
-
"@oktis-works/validation": "0.1.
|
|
26
|
-
"@oktis-works/theme-runtime": "0.1.
|
|
22
|
+
"@oktis-works/config": "0.1.7",
|
|
23
|
+
"@oktis-works/core": "0.1.7",
|
|
24
|
+
"@oktis-works/database": "0.1.7",
|
|
25
|
+
"@oktis-works/validation": "0.1.7",
|
|
26
|
+
"@oktis-works/theme-runtime": "0.1.7"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"typescript": "5.7.3"
|