nodebbs 0.0.9 → 0.1.0
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.
- package/README.md +19 -17
- package/dist/commands/db/import.d.ts +10 -0
- package/dist/commands/db/import.js +87 -0
- package/dist/commands/pack/index.js +3 -4
- package/dist/commands/rebuild/index.js +3 -3
- package/dist/commands/start/index.d.ts +1 -1
- package/dist/commands/start/index.js +70 -61
- package/dist/templates/docker-compose.lowmem.yml +3 -49
- package/dist/templates/docker-compose.yml +91 -34
- package/dist/templates/env +26 -11
- package/dist/utils/docker.d.ts +1 -1
- package/dist/utils/docker.js +2 -5
- package/dist/utils/env.d.ts +1 -1
- package/dist/utils/selection.d.ts +1 -1
- package/dist/utils/selection.js +5 -6
- package/oclif.manifest.json +93 -59
- package/package.json +1 -1
- package/dist/templates/docker-compose.prod.yml +0 -120
- package/dist/templates/init-db.sql +0 -14
package/oclif.manifest.json
CHANGED
|
@@ -61,14 +61,13 @@
|
|
|
61
61
|
"flags": {
|
|
62
62
|
"env": {
|
|
63
63
|
"char": "e",
|
|
64
|
-
"description": "部署环境 (production, lowmem
|
|
64
|
+
"description": "部署环境 (production, lowmem)",
|
|
65
65
|
"name": "env",
|
|
66
66
|
"hasDynamicHelp": false,
|
|
67
67
|
"multiple": false,
|
|
68
68
|
"options": [
|
|
69
69
|
"production",
|
|
70
|
-
"lowmem"
|
|
71
|
-
"basic"
|
|
70
|
+
"lowmem"
|
|
72
71
|
],
|
|
73
72
|
"type": "option"
|
|
74
73
|
},
|
|
@@ -97,6 +96,56 @@
|
|
|
97
96
|
"backup.js"
|
|
98
97
|
]
|
|
99
98
|
},
|
|
99
|
+
"db:import": {
|
|
100
|
+
"aliases": [],
|
|
101
|
+
"args": {},
|
|
102
|
+
"description": "导入数据库 (PostgreSQL)",
|
|
103
|
+
"flags": {
|
|
104
|
+
"env": {
|
|
105
|
+
"char": "e",
|
|
106
|
+
"description": "部署环境 (production, lowmem)",
|
|
107
|
+
"name": "env",
|
|
108
|
+
"hasDynamicHelp": false,
|
|
109
|
+
"multiple": false,
|
|
110
|
+
"options": [
|
|
111
|
+
"production",
|
|
112
|
+
"lowmem"
|
|
113
|
+
],
|
|
114
|
+
"type": "option"
|
|
115
|
+
},
|
|
116
|
+
"file": {
|
|
117
|
+
"char": "f",
|
|
118
|
+
"description": "SQL 备份文件路径",
|
|
119
|
+
"name": "file",
|
|
120
|
+
"required": true,
|
|
121
|
+
"hasDynamicHelp": false,
|
|
122
|
+
"multiple": false,
|
|
123
|
+
"type": "option"
|
|
124
|
+
},
|
|
125
|
+
"yes": {
|
|
126
|
+
"char": "y",
|
|
127
|
+
"description": "跳过确认提示",
|
|
128
|
+
"name": "yes",
|
|
129
|
+
"allowNo": false,
|
|
130
|
+
"type": "boolean"
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
"hasDynamicHelp": false,
|
|
134
|
+
"hiddenAliases": [],
|
|
135
|
+
"id": "db:import",
|
|
136
|
+
"pluginAlias": "nodebbs",
|
|
137
|
+
"pluginName": "nodebbs",
|
|
138
|
+
"pluginType": "core",
|
|
139
|
+
"strict": true,
|
|
140
|
+
"enableJsonFlag": false,
|
|
141
|
+
"isESM": true,
|
|
142
|
+
"relativePath": [
|
|
143
|
+
"dist",
|
|
144
|
+
"commands",
|
|
145
|
+
"db",
|
|
146
|
+
"import.js"
|
|
147
|
+
]
|
|
148
|
+
},
|
|
100
149
|
"db:push": {
|
|
101
150
|
"aliases": [],
|
|
102
151
|
"args": {},
|
|
@@ -104,14 +153,13 @@
|
|
|
104
153
|
"flags": {
|
|
105
154
|
"env": {
|
|
106
155
|
"char": "e",
|
|
107
|
-
"description": "部署环境 (production, lowmem
|
|
156
|
+
"description": "部署环境 (production, lowmem)",
|
|
108
157
|
"name": "env",
|
|
109
158
|
"hasDynamicHelp": false,
|
|
110
159
|
"multiple": false,
|
|
111
160
|
"options": [
|
|
112
161
|
"production",
|
|
113
|
-
"lowmem"
|
|
114
|
-
"basic"
|
|
162
|
+
"lowmem"
|
|
115
163
|
],
|
|
116
164
|
"type": "option"
|
|
117
165
|
}
|
|
@@ -139,14 +187,13 @@
|
|
|
139
187
|
"flags": {
|
|
140
188
|
"env": {
|
|
141
189
|
"char": "e",
|
|
142
|
-
"description": "部署环境 (production, lowmem
|
|
190
|
+
"description": "部署环境 (production, lowmem)",
|
|
143
191
|
"name": "env",
|
|
144
192
|
"hasDynamicHelp": false,
|
|
145
193
|
"multiple": false,
|
|
146
194
|
"options": [
|
|
147
195
|
"production",
|
|
148
|
-
"lowmem"
|
|
149
|
-
"basic"
|
|
196
|
+
"lowmem"
|
|
150
197
|
],
|
|
151
198
|
"type": "option"
|
|
152
199
|
}
|
|
@@ -174,14 +221,13 @@
|
|
|
174
221
|
"flags": {
|
|
175
222
|
"env": {
|
|
176
223
|
"char": "e",
|
|
177
|
-
"description": "部署环境 (production, lowmem
|
|
224
|
+
"description": "部署环境 (production, lowmem)",
|
|
178
225
|
"name": "env",
|
|
179
226
|
"hasDynamicHelp": false,
|
|
180
227
|
"multiple": false,
|
|
181
228
|
"options": [
|
|
182
229
|
"production",
|
|
183
|
-
"lowmem"
|
|
184
|
-
"basic"
|
|
230
|
+
"lowmem"
|
|
185
231
|
],
|
|
186
232
|
"type": "option"
|
|
187
233
|
}
|
|
@@ -209,14 +255,13 @@
|
|
|
209
255
|
"flags": {
|
|
210
256
|
"env": {
|
|
211
257
|
"char": "e",
|
|
212
|
-
"description": "部署环境 (production, lowmem
|
|
258
|
+
"description": "部署环境 (production, lowmem)",
|
|
213
259
|
"name": "env",
|
|
214
260
|
"hasDynamicHelp": false,
|
|
215
261
|
"multiple": false,
|
|
216
262
|
"options": [
|
|
217
263
|
"production",
|
|
218
|
-
"lowmem"
|
|
219
|
-
"basic"
|
|
264
|
+
"lowmem"
|
|
220
265
|
],
|
|
221
266
|
"type": "option"
|
|
222
267
|
}
|
|
@@ -244,14 +289,13 @@
|
|
|
244
289
|
"flags": {
|
|
245
290
|
"env": {
|
|
246
291
|
"char": "e",
|
|
247
|
-
"description": "部署环境 (production, lowmem
|
|
292
|
+
"description": "部署环境 (production, lowmem)",
|
|
248
293
|
"name": "env",
|
|
249
294
|
"hasDynamicHelp": false,
|
|
250
295
|
"multiple": false,
|
|
251
296
|
"options": [
|
|
252
297
|
"production",
|
|
253
|
-
"lowmem"
|
|
254
|
-
"basic"
|
|
298
|
+
"lowmem"
|
|
255
299
|
],
|
|
256
300
|
"type": "option"
|
|
257
301
|
}
|
|
@@ -279,14 +323,13 @@
|
|
|
279
323
|
"flags": {
|
|
280
324
|
"env": {
|
|
281
325
|
"char": "e",
|
|
282
|
-
"description": "部署环境 (production, lowmem
|
|
326
|
+
"description": "部署环境 (production, lowmem)",
|
|
283
327
|
"name": "env",
|
|
284
328
|
"hasDynamicHelp": false,
|
|
285
329
|
"multiple": false,
|
|
286
330
|
"options": [
|
|
287
331
|
"production",
|
|
288
|
-
"lowmem"
|
|
289
|
-
"basic"
|
|
332
|
+
"lowmem"
|
|
290
333
|
],
|
|
291
334
|
"type": "option"
|
|
292
335
|
}
|
|
@@ -314,14 +357,13 @@
|
|
|
314
357
|
"flags": {
|
|
315
358
|
"env": {
|
|
316
359
|
"char": "e",
|
|
317
|
-
"description": "部署环境 (production, lowmem
|
|
360
|
+
"description": "部署环境 (production, lowmem)",
|
|
318
361
|
"name": "env",
|
|
319
362
|
"hasDynamicHelp": false,
|
|
320
363
|
"multiple": false,
|
|
321
364
|
"options": [
|
|
322
365
|
"production",
|
|
323
|
-
"lowmem"
|
|
324
|
-
"basic"
|
|
366
|
+
"lowmem"
|
|
325
367
|
],
|
|
326
368
|
"type": "option"
|
|
327
369
|
}
|
|
@@ -349,14 +391,13 @@
|
|
|
349
391
|
"flags": {
|
|
350
392
|
"env": {
|
|
351
393
|
"char": "e",
|
|
352
|
-
"description": "部署环境 (production, lowmem
|
|
394
|
+
"description": "部署环境 (production, lowmem)",
|
|
353
395
|
"name": "env",
|
|
354
396
|
"hasDynamicHelp": false,
|
|
355
397
|
"multiple": false,
|
|
356
398
|
"options": [
|
|
357
399
|
"production",
|
|
358
|
-
"lowmem"
|
|
359
|
-
"basic"
|
|
400
|
+
"lowmem"
|
|
360
401
|
],
|
|
361
402
|
"type": "option"
|
|
362
403
|
}
|
|
@@ -411,7 +452,7 @@
|
|
|
411
452
|
"rebuild": {
|
|
412
453
|
"aliases": [],
|
|
413
454
|
"args": {},
|
|
414
|
-
"description": "
|
|
455
|
+
"description": "拉取最新镜像并重启服务 (Update & Restart)",
|
|
415
456
|
"flags": {},
|
|
416
457
|
"hasDynamicHelp": false,
|
|
417
458
|
"hiddenAliases": [],
|
|
@@ -436,14 +477,13 @@
|
|
|
436
477
|
"flags": {
|
|
437
478
|
"env": {
|
|
438
479
|
"char": "e",
|
|
439
|
-
"description": "部署环境 (production, lowmem
|
|
480
|
+
"description": "部署环境 (production, lowmem)",
|
|
440
481
|
"name": "env",
|
|
441
482
|
"hasDynamicHelp": false,
|
|
442
483
|
"multiple": false,
|
|
443
484
|
"options": [
|
|
444
485
|
"production",
|
|
445
|
-
"lowmem"
|
|
446
|
-
"basic"
|
|
486
|
+
"lowmem"
|
|
447
487
|
],
|
|
448
488
|
"type": "option"
|
|
449
489
|
}
|
|
@@ -471,14 +511,13 @@
|
|
|
471
511
|
"flags": {
|
|
472
512
|
"env": {
|
|
473
513
|
"char": "e",
|
|
474
|
-
"description": "部署环境 (production, lowmem
|
|
514
|
+
"description": "部署环境 (production, lowmem)",
|
|
475
515
|
"name": "env",
|
|
476
516
|
"hasDynamicHelp": false,
|
|
477
517
|
"multiple": false,
|
|
478
518
|
"options": [
|
|
479
519
|
"production",
|
|
480
|
-
"lowmem"
|
|
481
|
-
"basic"
|
|
520
|
+
"lowmem"
|
|
482
521
|
],
|
|
483
522
|
"type": "option"
|
|
484
523
|
}
|
|
@@ -506,14 +545,13 @@
|
|
|
506
545
|
"flags": {
|
|
507
546
|
"env": {
|
|
508
547
|
"char": "e",
|
|
509
|
-
"description": "部署环境 (production, lowmem
|
|
548
|
+
"description": "部署环境 (production, lowmem)",
|
|
510
549
|
"name": "env",
|
|
511
550
|
"hasDynamicHelp": false,
|
|
512
551
|
"multiple": false,
|
|
513
552
|
"options": [
|
|
514
553
|
"production",
|
|
515
|
-
"lowmem"
|
|
516
|
-
"basic"
|
|
554
|
+
"lowmem"
|
|
517
555
|
],
|
|
518
556
|
"type": "option"
|
|
519
557
|
}
|
|
@@ -541,14 +579,13 @@
|
|
|
541
579
|
"flags": {
|
|
542
580
|
"env": {
|
|
543
581
|
"char": "e",
|
|
544
|
-
"description": "部署环境 (production, lowmem
|
|
582
|
+
"description": "部署环境 (production, lowmem)",
|
|
545
583
|
"name": "env",
|
|
546
584
|
"hasDynamicHelp": false,
|
|
547
585
|
"multiple": false,
|
|
548
586
|
"options": [
|
|
549
587
|
"production",
|
|
550
|
-
"lowmem"
|
|
551
|
-
"basic"
|
|
588
|
+
"lowmem"
|
|
552
589
|
],
|
|
553
590
|
"type": "option"
|
|
554
591
|
}
|
|
@@ -576,14 +613,13 @@
|
|
|
576
613
|
"flags": {
|
|
577
614
|
"env": {
|
|
578
615
|
"char": "e",
|
|
579
|
-
"description": "部署环境 (production, lowmem
|
|
616
|
+
"description": "部署环境 (production, lowmem)",
|
|
580
617
|
"name": "env",
|
|
581
618
|
"hasDynamicHelp": false,
|
|
582
619
|
"multiple": false,
|
|
583
620
|
"options": [
|
|
584
621
|
"production",
|
|
585
|
-
"lowmem"
|
|
586
|
-
"basic"
|
|
622
|
+
"lowmem"
|
|
587
623
|
],
|
|
588
624
|
"type": "option"
|
|
589
625
|
}
|
|
@@ -611,23 +647,23 @@
|
|
|
611
647
|
"flags": {
|
|
612
648
|
"env": {
|
|
613
649
|
"char": "e",
|
|
614
|
-
"description": "部署环境 (production, lowmem
|
|
650
|
+
"description": "部署环境 (production, lowmem)",
|
|
615
651
|
"name": "env",
|
|
616
652
|
"hasDynamicHelp": false,
|
|
617
653
|
"multiple": false,
|
|
618
654
|
"options": [
|
|
619
655
|
"production",
|
|
620
|
-
"lowmem"
|
|
621
|
-
"basic"
|
|
656
|
+
"lowmem"
|
|
622
657
|
],
|
|
623
658
|
"type": "option"
|
|
624
659
|
},
|
|
625
|
-
"
|
|
626
|
-
"char": "
|
|
627
|
-
"description": "
|
|
628
|
-
"name": "
|
|
629
|
-
"
|
|
630
|
-
"
|
|
660
|
+
"tag": {
|
|
661
|
+
"char": "t",
|
|
662
|
+
"description": "Image version tag (e.g. latest, v0.1.0)",
|
|
663
|
+
"name": "tag",
|
|
664
|
+
"hasDynamicHelp": false,
|
|
665
|
+
"multiple": false,
|
|
666
|
+
"type": "option"
|
|
631
667
|
}
|
|
632
668
|
},
|
|
633
669
|
"hasDynamicHelp": false,
|
|
@@ -653,14 +689,13 @@
|
|
|
653
689
|
"flags": {
|
|
654
690
|
"env": {
|
|
655
691
|
"char": "e",
|
|
656
|
-
"description": "部署环境 (production, lowmem
|
|
692
|
+
"description": "部署环境 (production, lowmem)",
|
|
657
693
|
"name": "env",
|
|
658
694
|
"hasDynamicHelp": false,
|
|
659
695
|
"multiple": false,
|
|
660
696
|
"options": [
|
|
661
697
|
"production",
|
|
662
|
-
"lowmem"
|
|
663
|
-
"basic"
|
|
698
|
+
"lowmem"
|
|
664
699
|
],
|
|
665
700
|
"type": "option"
|
|
666
701
|
}
|
|
@@ -695,14 +730,13 @@
|
|
|
695
730
|
},
|
|
696
731
|
"env": {
|
|
697
732
|
"char": "e",
|
|
698
|
-
"description": "部署环境 (production, lowmem
|
|
733
|
+
"description": "部署环境 (production, lowmem)",
|
|
699
734
|
"name": "env",
|
|
700
735
|
"hasDynamicHelp": false,
|
|
701
736
|
"multiple": false,
|
|
702
737
|
"options": [
|
|
703
738
|
"production",
|
|
704
|
-
"lowmem"
|
|
705
|
-
"basic"
|
|
739
|
+
"lowmem"
|
|
706
740
|
],
|
|
707
741
|
"type": "option"
|
|
708
742
|
}
|
|
@@ -724,5 +758,5 @@
|
|
|
724
758
|
]
|
|
725
759
|
}
|
|
726
760
|
},
|
|
727
|
-
"version": "0.0
|
|
761
|
+
"version": "0.1.0"
|
|
728
762
|
}
|
package/package.json
CHANGED
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
# 生产环境 Docker Compose 覆盖配置
|
|
2
|
-
# 使用方式: docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d
|
|
3
|
-
# 本文件只包含与 docker-compose.yml 的差异部分
|
|
4
|
-
|
|
5
|
-
services:
|
|
6
|
-
# PostgreSQL 数据库 - 生产环境优化
|
|
7
|
-
postgres:
|
|
8
|
-
restart: always
|
|
9
|
-
ports: [] # 生产环境不暴露端口到主机,只在内部网络访问
|
|
10
|
-
environment:
|
|
11
|
-
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} # 生产环境必须设置强密码
|
|
12
|
-
healthcheck:
|
|
13
|
-
interval: 30s
|
|
14
|
-
timeout: 10s
|
|
15
|
-
retries: 5
|
|
16
|
-
start_period: 40s
|
|
17
|
-
deploy:
|
|
18
|
-
resources:
|
|
19
|
-
limits:
|
|
20
|
-
cpus: '1'
|
|
21
|
-
memory: 512M
|
|
22
|
-
reservations:
|
|
23
|
-
cpus: '0.25'
|
|
24
|
-
memory: 256M
|
|
25
|
-
logging:
|
|
26
|
-
driver: "json-file"
|
|
27
|
-
options:
|
|
28
|
-
max-size: "10m"
|
|
29
|
-
max-file: "3"
|
|
30
|
-
|
|
31
|
-
# Redis 缓存 - 生产环境优化
|
|
32
|
-
redis:
|
|
33
|
-
restart: always
|
|
34
|
-
command: >
|
|
35
|
-
redis-server
|
|
36
|
-
--requirepass ${REDIS_PASSWORD}
|
|
37
|
-
--appendonly yes
|
|
38
|
-
--appendfsync everysec
|
|
39
|
-
--maxmemory 256mb
|
|
40
|
-
--maxmemory-policy allkeys-lru
|
|
41
|
-
ports: [] # 生产环境不暴露端口到主机
|
|
42
|
-
healthcheck:
|
|
43
|
-
interval: 30s
|
|
44
|
-
timeout: 10s
|
|
45
|
-
retries: 5
|
|
46
|
-
start_period: 20s
|
|
47
|
-
deploy:
|
|
48
|
-
resources:
|
|
49
|
-
limits:
|
|
50
|
-
cpus: '0.5'
|
|
51
|
-
memory: 256M
|
|
52
|
-
reservations:
|
|
53
|
-
cpus: '0.1'
|
|
54
|
-
memory: 128M
|
|
55
|
-
logging:
|
|
56
|
-
driver: "json-file"
|
|
57
|
-
options:
|
|
58
|
-
max-size: "10m"
|
|
59
|
-
max-file: "3"
|
|
60
|
-
|
|
61
|
-
# API 服务 - 生产环境优化
|
|
62
|
-
api:
|
|
63
|
-
restart: always
|
|
64
|
-
environment:
|
|
65
|
-
USER_CACHE_TTL: ${USER_CACHE_TTL:-300} # 生产环境缓存时间更长
|
|
66
|
-
JWT_SECRET: ${JWT_SECRET} # 生产环境必须设置
|
|
67
|
-
CORS_ORIGIN: ${CORS_ORIGIN} # 生产环境必须明确设置
|
|
68
|
-
APP_URL: ${APP_URL} # 生产环境实际域名
|
|
69
|
-
NODE_OPTIONS: "--max-old-space-size=512" # 限制 Node.js 内存使用
|
|
70
|
-
volumes:
|
|
71
|
-
- api_uploads:/app/apps/api/uploads # 生产环境不挂载源代码
|
|
72
|
-
healthcheck:
|
|
73
|
-
start_period: 60s
|
|
74
|
-
deploy:
|
|
75
|
-
resources:
|
|
76
|
-
limits:
|
|
77
|
-
cpus: '1'
|
|
78
|
-
memory: 768M
|
|
79
|
-
reservations:
|
|
80
|
-
cpus: '0.3'
|
|
81
|
-
memory: 384M
|
|
82
|
-
logging:
|
|
83
|
-
driver: "json-file"
|
|
84
|
-
options:
|
|
85
|
-
max-size: "20m"
|
|
86
|
-
max-file: "5"
|
|
87
|
-
|
|
88
|
-
# Web 前端服务 - 生产环境优化
|
|
89
|
-
web:
|
|
90
|
-
restart: always
|
|
91
|
-
build:
|
|
92
|
-
args:
|
|
93
|
-
NEXT_PUBLIC_API_URL: ${NEXT_PUBLIC_API_URL}
|
|
94
|
-
NEXT_PUBLIC_APP_URL: ${NEXT_PUBLIC_APP_URL}
|
|
95
|
-
environment:
|
|
96
|
-
NEXT_PUBLIC_API_URL: ${NEXT_PUBLIC_API_URL}
|
|
97
|
-
NEXT_PUBLIC_APP_URL: ${NEXT_PUBLIC_APP_URL}
|
|
98
|
-
NODE_OPTIONS: "--max-old-space-size=512" # 限制 Node.js 内存使用
|
|
99
|
-
healthcheck:
|
|
100
|
-
start_period: 60s
|
|
101
|
-
deploy:
|
|
102
|
-
resources:
|
|
103
|
-
limits:
|
|
104
|
-
cpus: '1'
|
|
105
|
-
memory: 768M
|
|
106
|
-
reservations:
|
|
107
|
-
cpus: '0.3'
|
|
108
|
-
memory: 384M
|
|
109
|
-
logging:
|
|
110
|
-
driver: "json-file"
|
|
111
|
-
options:
|
|
112
|
-
max-size: "20m"
|
|
113
|
-
max-file: "5"
|
|
114
|
-
|
|
115
|
-
# 网络 - 生产环境使用固定子网
|
|
116
|
-
networks:
|
|
117
|
-
nodebbs-network:
|
|
118
|
-
ipam:
|
|
119
|
-
config:
|
|
120
|
-
- subnet: 172.28.0.0/16
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
-- PostgreSQL 初始化脚本
|
|
2
|
-
-- 这个脚本会在数据库首次创建时执行
|
|
3
|
-
|
|
4
|
-
-- 创建扩展(如果需要)
|
|
5
|
-
-- CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
|
6
|
-
-- CREATE EXTENSION IF NOT EXISTS "pg_trgm";
|
|
7
|
-
|
|
8
|
-
-- 设置时区
|
|
9
|
-
SET timezone = 'Asia/Shanghai';
|
|
10
|
-
|
|
11
|
-
-- 数据库已由 POSTGRES_DB 环境变量创建
|
|
12
|
-
-- 这里可以添加其他初始化 SQL
|
|
13
|
-
|
|
14
|
-
\echo '数据库初始化完成'
|