From 8d6733a27c5aba66a5e939aa762cd66db6cda6a1 Mon Sep 17 00:00:00 2001 From: chengkai3 Date: Thu, 30 Apr 2026 07:49:32 +0800 Subject: [PATCH] chore: switch postgres default host port to 5434 --- .env.example | 4 ++-- .github/workflows/main.yml | 4 ++-- MEMORY.md | 4 ++-- README.md | 2 +- api/app/core/config.py | 2 +- docker-compose.yml | 2 +- memory/2026-04-30.md | 30 ++++++++++++++++++++++++++++++ 7 files changed, 39 insertions(+), 9 deletions(-) create mode 100644 memory/2026-04-30.md diff --git a/.env.example b/.env.example index b3c7c42..7cfb441 100644 --- a/.env.example +++ b/.env.example @@ -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 @@ -42,7 +42,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 diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 9d99f02..a6d24ba 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -137,7 +137,7 @@ jobs: 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: @@ -379,7 +379,7 @@ jobs: POSTGRES_DB=fquiz POSTGRES_USER=fquiz POSTGRES_PASSWORD=fquiz - POSTGRES_PORT=5433 + POSTGRES_PORT=5434 POSTGRES_IMAGE=docker.m.daocloud.io/pgvector/pgvector:pg16 REDIS_IMAGE=docker.m.daocloud.io/library/redis:7-alpine REDIS_PORT=6379 diff --git a/MEMORY.md b/MEMORY.md index f19dd3d..92d6d08 100644 --- a/MEMORY.md +++ b/MEMORY.md @@ -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` 直接中断发布。 - GitHub Actions 的部署编排需与仓库 `docker-compose.yml` 服务拓扑保持一致,至少包含 `db/api/web/redis/minio/minio-init/celery-worker/celery-beat`;避免在 workflow 内维护“精简版 compose”导致运行时能力缺失(如 Celery/MinIO)。 @@ -224,7 +224,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`)。 diff --git a/README.md b/README.md index ccbcc11..316f095 100644 --- a/README.md +++ b/README.md @@ -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. 停止并清理: diff --git a/api/app/core/config.py b/api/app/core/config.py index 30cbd68..29b859d 100644 --- a/api/app/core/config.py +++ b/api/app/core/config.py @@ -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" diff --git a/docker-compose.yml b/docker-compose.yml index 2aeb17b..3137295 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -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: diff --git a/memory/2026-04-30.md b/memory/2026-04-30.md new file mode 100644 index 0000000..8f55ad8 --- /dev/null +++ b/memory/2026-04-30.md @@ -0,0 +1,30 @@ +## Work Log - Docker PostgreSQL 默认端口切换为 5434(2026-04-30) + +- 背景: + - 用户要求将 Docker 镜像构建/部署链路中的 PostgreSQL 默认宿主机端口改为 `5434`。 + +- 本次改动: + - `docker-compose.yml` + - `db.ports` 默认映射从 `${POSTGRES_PORT:-5433}:5432` 改为 `${POSTGRES_PORT:-5434}:5432`。 + - `.env` + - `POSTGRES_PORT=5434`。 + - `.env.example` + - `DB_PORT=5434`(本机直连口径)。 + - `POSTGRES_PORT=5434`(容器暴露口径)。 + - `.github/workflows/main.yml` + - 部署阶段生成的 `docker-compose.prod.yml` 默认映射改为 `${POSTGRES_PORT:-5434}:5432`。 + - 自动生成 `.env` 模板中的 `POSTGRES_PORT=5434`。 + - `api/app/core/config.py` + - 本机默认 `db_port` 从 `5433` 改为 `5434`,与新口径一致。 + - `README.md` + - 本地 PostgreSQL 可选端口说明从 `localhost:5433` 更新为 `localhost:5434`。 + - `MEMORY.md` + - 长期端口口径同步更新为 `5434`。 + +- 验证: + - 通过 `rg` 全局检索 `POSTGRES_PORT/5433` 相关配置,确认运行口径已切换到 `5434`。 + - 本次未执行容器重建或运行态联调。 + +- 风险与影响: + - 影响范围:Docker 暴露端口与本机直连默认端口。 + - 若已有外部脚本/客户端固定连接 `5433`,需同步改为 `5434` 或显式覆盖 `POSTGRES_PORT/DB_PORT`。