Files
geMoldInsight/docs/deployment/PORT_CONFIG.md
T
2026-08-27 14:53:22 +08:00

3.3 KiB
Raw Blame History

端口配置说明(模块化架构)

本文档说明当前 geMoldInsight 在模块化部署下的端口配置方式。

当前架构中应区分:

  • gemold API 端口
  • inventory API 端口
  • 数据库/Redis/对象存储端口
  • 前端访问地址

不再推荐把所有部署场景都抽象成“单应用单端口”。


1. 当前主配置位置

对于 Docker Compose 部署,当前主要端口配置来源于:

注意:该 compose 文件仅负责项目应用容器,不负责 PostgreSQL / Redis / 对象存储容器。

核心环境变量:

MOLDINSIGHT_PORT=8000
INVENTORY_PORT=8001

其余基础设施通常为:

DB_PORT=5432
REDIS_PORT=6379

对象存储常见端口(由服务器既有服务提供):

RUSTFS_ENDPOINT=http://localhost:9000

2. 各端口的含义

变量 / 端口 用途
MOLDINSIGHT_PORT gemold API 宿主机暴露端口
INVENTORY_PORT inventory API 宿主机暴露端口
DB_PORT PostgreSQL 端口
REDIS_PORT Redis 端口
9000 MinIO/RustFS S3 兼容 API
9001 MinIO 控制台

3. 推荐配置方式

3.1 gemold-only

MOLDINSIGHT_PORT=8000
DB_PORT=5432
REDIS_PORT=6379

3.2 inventory-only

INVENTORY_PORT=8001
DB_PORT=5432
REDIS_PORT=6379

3.3 full / 模块同时部署

MOLDINSIGHT_PORT=8000
INVENTORY_PORT=8001
DB_PORT=5432
REDIS_PORT=6379

4. 为什么不再强调单一 PORT 变量

历史单体部署通常只有一个后端入口,因此 PORT=8000 足够。

当前项目已经是:

  • gemold 独立入口
  • inventory 独立入口
  • unified 作为组合模式而非默认单体入口

因此端口配置必须模块化:

  • gemold 一个端口
  • inventory 一个端口
  • 如果 unified 对外存在,可以由网关统一暴露 80/443

这比继续强行把所有模式压成一个 PORT 更清晰,也更符合真实部署方式。


5. 直接运行与 Compose 的区别

直接运行

gemold:

uvicorn src.entrypoints.moldinsight:app --port 8000

inventory:

uvicorn src.entrypoints.inventory:app --port 8001

Docker Compose

Compose 通过端口映射暴露服务:

  • gemold → ${MOLDINSIGHT_PORT}:8000
  • inventory → ${INVENTORY_PORT}:8001

当前实际定义见:


6. 与前端配置的关系

前端是否使用 unified / split deployment,会影响前端 API 地址配置。

unified

  • 一个 API 基地址

split

  • gemold 与 inventory 各自基地址

因此,修改后端端口后,可能还需要同步:

  • 前端 .env
  • Nginx 反向代理
  • 浏览器访问地址

7. 推荐实践

  1. 本地开发

    • gemold:8000
    • inventory:8001
  2. 服务器部署

    • 外网只暴露 80/443
    • Nginx 反代到 8000 / 8001
  3. 不要继续把所有部署模式都写成 src.main:app + PORT=8000

    • 这已不符合当前架构

8. 关联文档