nodebbs 0.3.0-beta.0 → 0.3.0-beta.3

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.
@@ -6,7 +6,7 @@ services:
6
6
  # PostgreSQL - 低内存优化
7
7
  postgres:
8
8
  restart: always
9
- ports: []
9
+
10
10
  deploy:
11
11
  resources:
12
12
  limits:
@@ -24,7 +24,7 @@ services:
24
24
  # Redis - 低内存优化
25
25
  redis:
26
26
  restart: always
27
- ports: []
27
+
28
28
  command: >
29
29
  redis-server
30
30
  --requirepass ${REDIS_PASSWORD:-redis_password}
@@ -0,0 +1,8 @@
1
+ services:
2
+ postgres:
3
+ ports:
4
+ - "${POSTGRES_PORT:-5432}:5432"
5
+
6
+ redis:
7
+ ports:
8
+ - "${REDIS_PORT:-6379}:6379"
@@ -6,7 +6,7 @@ services:
6
6
  # PostgreSQL - 生产环境安全与资源优化
7
7
  postgres:
8
8
  restart: always
9
- ports: [] # 安全:不暴露端口到主机
9
+
10
10
  deploy:
11
11
  resources:
12
12
  limits:
@@ -24,7 +24,7 @@ services:
24
24
  # Redis - 生产环境安全与资源优化
25
25
  redis:
26
26
  restart: always
27
- ports: [] # 安全:不暴露端口到主机
27
+
28
28
  command: >
29
29
  redis-server
30
30
  --requirepass ${REDIS_PASSWORD}
@@ -1,3 +1,5 @@
1
+ name: nodebbs
2
+
1
3
  services:
2
4
  # PostgreSQL 数据库
3
5
  postgres:
@@ -12,8 +14,7 @@ services:
12
14
  volumes:
13
15
  - postgres_data:/var/lib/postgresql/data
14
16
 
15
- ports:
16
- - "${POSTGRES_PORT:-5432}:5432"
17
+
17
18
  healthcheck:
18
19
  test: ["CMD-SHELL", "pg_isready -U postgres"]
19
20
  interval: 10s
@@ -32,8 +33,7 @@ services:
32
33
  TZ: Asia/Shanghai
33
34
  volumes:
34
35
  - redis_data:/data
35
- ports:
36
- - "${REDIS_PORT:-6379}:6379"
36
+
37
37
  healthcheck:
38
38
  test: ["CMD", "redis-cli", "--raw", "incr", "ping"]
39
39
  interval: 10s
@@ -96,6 +96,11 @@ services:
96
96
  PORT: 3100
97
97
  SERVER_API_URL: ${SERVER_API_URL:-http://api:7100}
98
98
  TZ: Asia/Shanghai
99
+ # volumes:
100
+ # 自定义资源挂载(如有需要,请取消注释并在同级目录下创建 web 文件夹及对应文件)
101
+ # - ./web/favicon.ico:/app/apps/web/public/favicon.ico
102
+ # - ./web/logo.svg:/app/apps/web/public/logo.svg
103
+ # - ./web/apple-touch-icon.png:/app/apps/web/public/apple-touch-icon.png
99
104
  ports:
100
105
  - "${WEB_PORT:-3100}:3100"
101
106
  depends_on:
@@ -31,6 +31,7 @@ export async function getComposeFiles(env) {
31
31
  // 1. 确定 Base 文件
32
32
  // 检查当前目录是否存在 docker-compose.yml
33
33
  let baseFile = path.join(workDir, 'docker-compose.yml');
34
+ // 2. 确定构建配置 (仅源码模式)和环境 Override
34
35
  const templateDir = getTemplateDir();
35
36
  if (!await fileExists(baseFile)) {
36
37
  // 使用内置模板
@@ -38,19 +39,26 @@ export async function getComposeFiles(env) {
38
39
  baseFile = getTemplatePath('docker-compose.yml');
39
40
  }
40
41
  const files = [baseFile];
41
- // 2. 确定环境 Override 文件 (production / lowmem)
42
- if (env === 'production' || env === 'lowmem') {
43
- const fileName = `docker-compose.${env}.yml`;
42
+ // 映射 environment 到对应的 override 文件名
43
+ const envFileMap = {
44
+ 'production': 'docker-compose.prod.yml',
45
+ 'lowmem': 'docker-compose.lowmem.yml',
46
+ 'basic': 'docker-compose.ports.yml'
47
+ };
48
+ if (env in envFileMap) {
49
+ const fileName = envFileMap[env];
50
+ // 注意:basic 对应的 ports.yml 是新增的,可能不存在于旧项目的根目录,
51
+ // 但如果是在 CLI 内部运行,templateDir 里肯定有。
52
+ // 如果是 production/lowmem,用户目录可能有 override。
44
53
  const localOverride = path.join(workDir, fileName);
45
54
  const templateOverride = path.join(templateDir, fileName);
55
+ // 策略调整:
56
+ // basic -> 总是尝试加载 ports.yml (通常只存在于 template,或者用户没覆盖)
57
+ // production/lowmem -> 尝试加载对应的 override
46
58
  if (await fileExists(localOverride)) {
47
59
  files.push(localOverride);
48
60
  }
49
61
  else if (await fileExists(templateOverride)) {
50
- // 即使 Base 是本地的,如果本地没有 override,我们也尝试用内置的 override 补全吗?
51
- // 通常为了混用方便,是可以的。但如果 Base 是本地,通常期望全套本地。
52
- // 策略:如果 Base 是内置,则一定用内置 Override。如果 Base 是本地,仅当本地也有 Override 时才用?
53
- // 不,为了方便用户只覆盖 Base 而复用我们的资源配置,如果本地没 Override,可以用内置的。
54
62
  files.push(templateOverride);
55
63
  }
56
64
  }
@@ -245,6 +245,37 @@
245
245
  "seed.js"
246
246
  ]
247
247
  },
248
+ "pack": {
249
+ "aliases": [],
250
+ "args": {},
251
+ "description": "生成离线部署包",
252
+ "flags": {
253
+ "output": {
254
+ "char": "o",
255
+ "description": "输出文件名",
256
+ "name": "output",
257
+ "default": "nodebbs-offline.tar.gz",
258
+ "hasDynamicHelp": false,
259
+ "multiple": false,
260
+ "type": "option"
261
+ }
262
+ },
263
+ "hasDynamicHelp": false,
264
+ "hiddenAliases": [],
265
+ "id": "pack",
266
+ "pluginAlias": "nodebbs",
267
+ "pluginName": "nodebbs",
268
+ "pluginType": "core",
269
+ "strict": true,
270
+ "enableJsonFlag": false,
271
+ "isESM": true,
272
+ "relativePath": [
273
+ "dist",
274
+ "commands",
275
+ "pack",
276
+ "index.js"
277
+ ]
278
+ },
248
279
  "logs:all": {
249
280
  "aliases": [],
250
281
  "args": {},
@@ -420,37 +451,6 @@
420
451
  "web.js"
421
452
  ]
422
453
  },
423
- "pack": {
424
- "aliases": [],
425
- "args": {},
426
- "description": "生成离线部署包",
427
- "flags": {
428
- "output": {
429
- "char": "o",
430
- "description": "输出文件名",
431
- "name": "output",
432
- "default": "nodebbs-offline.tar.gz",
433
- "hasDynamicHelp": false,
434
- "multiple": false,
435
- "type": "option"
436
- }
437
- },
438
- "hasDynamicHelp": false,
439
- "hiddenAliases": [],
440
- "id": "pack",
441
- "pluginAlias": "nodebbs",
442
- "pluginName": "nodebbs",
443
- "pluginType": "core",
444
- "strict": true,
445
- "enableJsonFlag": false,
446
- "isESM": true,
447
- "relativePath": [
448
- "dist",
449
- "commands",
450
- "pack",
451
- "index.js"
452
- ]
453
- },
454
454
  "restart": {
455
455
  "aliases": [],
456
456
  "args": {},
@@ -781,5 +781,5 @@
781
781
  ]
782
782
  }
783
783
  },
784
- "version": "0.3.0-beta.0"
784
+ "version": "0.3.0-beta.3"
785
785
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "nodebbs",
3
3
  "description": "NodeBBS 论坛系统专业运维工具",
4
- "version": "0.3.0-beta.0",
4
+ "version": "0.3.0-beta.3",
5
5
  "author": "wengqianshan",
6
6
  "bin": {
7
7
  "nodebbs": "./bin/run.js"