Files
geMoldInsight/PORT_CONFIG.md
T

3.1 KiB
Raw Blame History

端口配置说明

⚠️ 重要提示

本项目现在采用统一端口配置管理,所有端口配置集中在一个地方:

唯一修改端口的地方: .env 文件中的端口配置部分

配置说明

编辑项目根目录下的 .env 文件:

# ================================
# 端口配置 - 唯一修改端口的地方
# ================================
# 应用端口(容器内端口)
PORT=8000
# Docker映射到宿主机的端口(docker-compose使用)
HOST_PORT=10001
# ================================

端口含义

变量 用途 默认值 说明
PORT 应用监听端口 8000 FastAPI/Uvicorn 服务监听的端口
HOST_PORT 宿主机映射端口 10001 Docker Compose 映射到宿主机的端口

使用场景

1. 本地直接运行(Python)

python src/main.py

服务将在 http://localhost:8000 启动(使用 PORT 配置)

2. Docker Compose 运行

docker-compose up

服务将在 http://localhost:10001 访问(使用 HOST_PORT 配置) 容器内部使用 PORT 配置的端口(8000)

3. 修改端口

场景A:只想修改外部访问端口(Docker)

# .env 文件
PORT=8000          # 容器内不变
HOST_PORT=8080     # 宿主机改为8080

访问地址:http://localhost:8080

场景B:修改应用端口(容器内/本地运行)

# .env 文件
PORT=9000          # 应用改为9000
HOST_PORT=10001    # 宿主机映射到10001
  • 本地运行:http://localhost:9000
  • Docker运行:http://localhost:10001 (映射到容器内9000)

场景C:同时修改两个端口

# .env 文件
PORT=9000
HOST_PORT=9000
  • 本地运行:http://localhost:9000
  • Docker运行:http://localhost:9000

配置文件说明

配置读取优先级

  1. config/settings.py - 从 .env 读取 PORT 和 HOST
  2. src/main.py - 从 settings 获取端口配置
  3. docker-compose.yml - 从 .env 读取 HOST_PORT 和 PORT

相关文件

  • .env - ⭐ 唯一需要修改的配置文件
  • config/settings.py - 配置读取逻辑(无需修改)
  • src/main.py - 使用配置启动服务(无需修改)
  • docker-compose.yml - Docker端口映射(自动读取 .env)
  • start.sh / start_fixed.sh - 启动脚本(自动读取 .env)

常见问题

Q: 为什么 Docker 宿主机端口和应用端口分开配置?

A: 这样可以灵活调整容器端口而不影响外部访问,也避免端口冲突。

Q: 修改后需要重启吗?

A: 是的,修改 .env 后需要重启服务才能生效:

  • 本地运行:Ctrl+C 停止后重新 python src/main.py
  • Docker: docker-compose down && docker-compose up

Q: 如何避免端口冲突?

A: 确保 HOST_PORT 不与其他服务冲突,可以使用 netstat -an | grep <端口> 检查端口占用情况。

Q: 可以使用 80 端口吗?

A: 可以,但需要管理员权限:

  • Linux/Mac: 使用 sudo
  • Docker: 需要容器有足够权限
  • 生产环境建议使用反向代理(如 Nginx)