chore: switch default postgres host port to 5434
This commit is contained in:
+2
-2
@@ -5,7 +5,7 @@ API_CORS_ORIGINS=http://localhost:3000,http://127.0.0.1:3000
|
||||
API_CORS_ORIGIN_REGEX=
|
||||
DATABASE_URL=
|
||||
DB_HOST=127.0.0.1
|
||||
DB_PORT=5433
|
||||
DB_PORT=5434
|
||||
DB_NAME=postgres
|
||||
DB_SCHEMA=public
|
||||
DB_USERNAME=fquiz
|
||||
@@ -43,7 +43,7 @@ INITIAL_ADMIN_PASSWORD=change-me-strong-password
|
||||
POSTGRES_DB=fquiz
|
||||
POSTGRES_USER=fquiz
|
||||
POSTGRES_PASSWORD=fquiz
|
||||
POSTGRES_PORT=5433
|
||||
POSTGRES_PORT=5434
|
||||
POSTGRES_IMAGE=docker.m.daocloud.io/pgvector/pgvector:pg16
|
||||
PYTHON_BASE_IMAGE=docker.m.daocloud.io/library/python:3.11-slim
|
||||
NODE_BASE_IMAGE=docker.m.daocloud.io/library/node:22-alpine
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
- SQLAlchemy 关联加载选项(`selectinload/joinedload`)避免在模块导入期以全局常量初始化,优先在函数内惰性构建,防止导入顺序导致 mapper 提前配置失败。
|
||||
- `app.models` 包初始化需预加载全部模型模块,确保字符串关系(如 `"AuditLog"`)在启动阶段可解析。
|
||||
- 部署 compose 中 DB 镜像应通过 `POSTGRES_IMAGE` 可配置,默认使用镜像站的 pgvector 镜像(`docker.m.daocloud.io/pgvector/pgvector:pg16`)。
|
||||
- 宿主机 DB 暴露端口统一走 `POSTGRES_PORT`(默认 `5433`),用于规避与宿主机已有 PostgreSQL(常见 `5432`)冲突;容器内连接仍保持 `db:5432`。
|
||||
- 宿主机 DB 暴露端口统一走 `POSTGRES_PORT`(默认 `5434`),用于规避与宿主机已有 PostgreSQL(常见 `5432`)冲突;容器内连接仍保持 `db:5432`。
|
||||
- CORS 来源控制采用“双轨配置”:`API_CORS_ORIGINS`(精确列表)+ `API_CORS_ORIGIN_REGEX`(正则,可选);`API_CORS_ORIGINS` 支持 `*` 和通配符域名并在后端转换为 `allow_origin_regex`。
|
||||
- GitHub Actions 使用 `appleboy/ssh-action` 部署时,慢网环境需显式设置 `command_timeout`(建议 `45m`)并为 `docker compose pull` 增加重试,避免出现 `Run Command Timeout` 直接中断发布。
|
||||
- `docker compose up -d` 不会重建 `build` 类型服务镜像;本项目 `web` 无源码挂载且运行 Next.js 生产构建产物,前端代码变更后需执行 `docker compose up --build -d web`(必要时先 `docker compose build --no-cache web`)。
|
||||
@@ -221,7 +221,7 @@
|
||||
|
||||
- 默认参数口径:
|
||||
- Docker 内:`DB_HOST=db`、`DB_PORT=5432`、`DB_NAME=postgres`、`DB_USERNAME=fquiz`、`DB_PASSWORD=fquiz`。
|
||||
- 本机直连(非 Docker):`DB_HOST=127.0.0.1`、`DB_PORT=5433`、`DB_NAME=postgres`、`DB_USERNAME=fquiz`、`DB_PASSWORD=fquiz`。
|
||||
- 本机直连(非 Docker):`DB_HOST=127.0.0.1`、`DB_PORT=5434`、`DB_NAME=postgres`、`DB_USERNAME=fquiz`、`DB_PASSWORD=fquiz`。
|
||||
- `docker compose` 的 `db` 服务已取消 `local-db` profile,默认 `up` 即启动本地库;`api` 增加 `depends_on: db (healthy)`。
|
||||
- `DB_SCHEMA` 通过 PostgreSQL `search_path` 注入,语义等价 JDBC 的 `currentSchema`。
|
||||
- API 启动初始化口径:`seed_defaults` 对本地目标执行;为兼容老表状态约束,初始管理员状态写入值统一为 `ENABLED`(不使用 `active`)。
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
- 前端:`http://localhost:3000`
|
||||
- 后端:`http://localhost:8000/health`
|
||||
- PostgreSQL:默认连接外部库(`DB_HOST/DB_PORT/DB_NAME/DB_SCHEMA/DB_USERNAME/DB_PASSWORD`)
|
||||
- 本地 PostgreSQL(可选):启用 `local-db` profile 后使用 `localhost:5433`(可通过 `POSTGRES_PORT` 覆盖)
|
||||
- 本地 PostgreSQL(可选):启用 `local-db` profile 后使用 `localhost:5434`(可通过 `POSTGRES_PORT` 覆盖)
|
||||
|
||||
5. 停止并清理:
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ class Settings(BaseSettings):
|
||||
|
||||
database_url: str | None = None
|
||||
db_host: str = "127.0.0.1"
|
||||
db_port: int = 5433
|
||||
db_port: int = 5434
|
||||
db_name: str = "postgres"
|
||||
db_schema: str = "public"
|
||||
db_username: str = "fquiz"
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ services:
|
||||
POSTGRES_USER: ${POSTGRES_USER:-fquiz}
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-fquiz}
|
||||
ports:
|
||||
- "${POSTGRES_PORT:-5433}:5432"
|
||||
- "${POSTGRES_PORT:-5434}:5432"
|
||||
volumes:
|
||||
- fquiz_db_data:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
|
||||
@@ -61,3 +61,31 @@
|
||||
- 风险与影响:
|
||||
- 生产发布入口从 `main` 切换到 `dev`,需确认团队分支策略已同步。
|
||||
- `workflow_dispatch` 若在非 `dev` 分支触发,deploy job 会被 `if` 条件跳过。
|
||||
|
||||
## Work Log - 修复 docker db 端口 5433 冲突并改为 5434(2026-05-01)
|
||||
|
||||
- 背景:
|
||||
- `docker compose` 启动 `db` 报错:`Bind for 0.0.0.0:5433 failed: port is already allocated`。
|
||||
- 现有默认口径为宿主机映射 `5433->5432`,与本机已占用端口冲突。
|
||||
|
||||
- 本次改动(最小闭环):
|
||||
- 文件:`docker-compose.yml`
|
||||
- `db.ports` 默认映射从 `${POSTGRES_PORT:-5433}:5432` 改为 `${POSTGRES_PORT:-5434}:5432`。
|
||||
- 文件:`.env.example`
|
||||
- `POSTGRES_PORT` 默认值从 `5433` 改为 `5434`。
|
||||
- 本机直连 `DB_PORT` 默认值从 `5433` 改为 `5434`。
|
||||
- 文件:`api/app/core/config.py`
|
||||
- `db_port` 默认值从 `5433` 改为 `5434`,与环境模板和 compose 默认保持一致。
|
||||
- 文件:`README.md`
|
||||
- 本地 PostgreSQL 示例端口从 `localhost:5433` 更新为 `localhost:5434`。
|
||||
- 文件:`MEMORY.md`
|
||||
- 宿主机默认 `POSTGRES_PORT` 与本机直连 `DB_PORT` 长期口径同步更新为 `5434`。
|
||||
|
||||
- 验证:
|
||||
- `POSTGRES_PORT=5434 docker compose up -d db` -> `fquiz-db` 启动成功。
|
||||
- `docker compose ps -a` -> `fquiz-db` 状态 `Up ... (healthy)`。
|
||||
- `docker inspect fquiz-db --format '{{json .HostConfig.PortBindings}}'` -> `5432/tcp` 映射 `HostPort=5434`。
|
||||
|
||||
- 风险与影响:
|
||||
- 影响范围:本地/部署侧依赖默认 `5433` 的连接配置需同步为 `5434`,否则会出现连接失败。
|
||||
- 容器内服务间连接不受影响,仍通过 `db:5432` 通信。
|
||||
|
||||
Reference in New Issue
Block a user