3.3 KiB
3.3 KiB
端口配置说明(模块化架构)
本文档说明当前 geMoldInsight 在模块化部署下的端口配置方式。
当前架构中应区分:
- gemold API 端口
- inventory API 端口
- 数据库/Redis/对象存储端口
- 前端访问地址
不再推荐把所有部署场景都抽象成“单应用单端口”。
1. 当前主配置位置
对于 Docker Compose 部署,当前主要端口配置来源于:
- docker-compose.yml
.env/deploy/.env.example
注意:该 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. 推荐实践
-
本地开发
- gemold:8000
- inventory:8001
-
服务器部署
- 外网只暴露 80/443
- Nginx 反代到 8000 / 8001
-
不要继续把所有部署模式都写成
src.main:app + PORT=8000- 这已不符合当前架构