chore: switch db port to 5433 and use pgvector image
This commit is contained in:
+2
-1
@@ -15,7 +15,8 @@ INITIAL_ADMIN_PASSWORD=change-me-strong-password
|
||||
POSTGRES_DB=fquiz
|
||||
POSTGRES_USER=fquiz
|
||||
POSTGRES_PASSWORD=fquiz
|
||||
POSTGRES_IMAGE=docker.m.daocloud.io/library/postgres:16-alpine
|
||||
POSTGRES_PORT=5433
|
||||
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
|
||||
PIP_INDEX_URL=https://pypi.org/simple
|
||||
|
||||
@@ -127,14 +127,14 @@ jobs:
|
||||
cat > docker-compose.prod.yml <<'YAML'
|
||||
services:
|
||||
db:
|
||||
image: ${POSTGRES_IMAGE:-docker.m.daocloud.io/library/postgres:16-alpine}
|
||||
image: ${POSTGRES_IMAGE:-docker.m.daocloud.io/pgvector/pgvector:pg16}
|
||||
container_name: fquiz-db
|
||||
environment:
|
||||
POSTGRES_DB: ${POSTGRES_DB:-fquiz}
|
||||
POSTGRES_USER: ${POSTGRES_USER:-fquiz}
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-fquiz}
|
||||
ports:
|
||||
- "5432:5432"
|
||||
- "${POSTGRES_PORT:-5433}:5432"
|
||||
volumes:
|
||||
- fquiz_db_data:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
@@ -209,7 +209,8 @@ jobs:
|
||||
POSTGRES_DB=fquiz
|
||||
POSTGRES_USER=fquiz
|
||||
POSTGRES_PASSWORD=fquiz
|
||||
POSTGRES_IMAGE=docker.m.daocloud.io/library/postgres:16-alpine
|
||||
POSTGRES_PORT=5433
|
||||
POSTGRES_IMAGE=docker.m.daocloud.io/pgvector/pgvector:pg16
|
||||
ENV
|
||||
echo "[warn] .env 不存在,已写入默认模板,请尽快改成生产配置。"
|
||||
fi
|
||||
|
||||
@@ -38,5 +38,6 @@
|
||||
|
||||
- SQLAlchemy 关联加载选项(`selectinload/joinedload`)避免在模块导入期以全局常量初始化,优先在函数内惰性构建,防止导入顺序导致 mapper 提前配置失败。
|
||||
- `app.models` 包初始化需预加载全部模型模块,确保字符串关系(如 `"AuditLog"`)在启动阶段可解析。
|
||||
- 部署 compose 中 DB 镜像应通过 `POSTGRES_IMAGE` 可配置,默认使用镜像站(`docker.m.daocloud.io/library/postgres:16-alpine`)以降低 Docker Hub 网络抖动风险。
|
||||
- 部署 compose 中 DB 镜像应通过 `POSTGRES_IMAGE` 可配置,默认使用镜像站的 pgvector 镜像(`docker.m.daocloud.io/pgvector/pgvector:pg16`)。
|
||||
- 宿主机 DB 暴露端口统一走 `POSTGRES_PORT`(默认 `5433`),用于规避与宿主机已有 PostgreSQL(常见 `5432`)冲突;容器内连接仍保持 `db:5432`。
|
||||
- GitHub Actions 使用 `appleboy/ssh-action` 部署时,慢网环境需显式设置 `command_timeout`(建议 `45m`)并为 `docker compose pull` 增加重试,避免出现 `Run Command Timeout` 直接中断发布。
|
||||
|
||||
@@ -113,7 +113,7 @@ npm run lint:web
|
||||
|
||||
- 前端:`http://localhost:3000`
|
||||
- 后端:`http://localhost:8000/health`
|
||||
- PostgreSQL:`localhost:5432`
|
||||
- PostgreSQL:`localhost:5433`(可通过 `POSTGRES_PORT` 覆盖)
|
||||
|
||||
5. 停止并清理:
|
||||
|
||||
@@ -124,4 +124,4 @@ npm run lint:web
|
||||
说明:
|
||||
- `NEXT_PUBLIC_API_BASE_URL` 在 Next.js 中是构建期注入;如果修改该值,需要重新执行 `docker compose up --build`。
|
||||
- 若使用 Docker Compose,默认 `DATABASE_URL` 指向容器内 `db` 服务(PostgreSQL)。
|
||||
- 默认镜像源已配置为 `docker.m.daocloud.io`,如你网络环境可直连 Docker Hub,可在 `.env` 中覆盖 `POSTGRES_IMAGE / PYTHON_BASE_IMAGE / NODE_BASE_IMAGE`。
|
||||
- 默认镜像源已配置为 `docker.m.daocloud.io`,并默认使用 `pgvector` 镜像;如你网络环境可直连 Docker Hub,可在 `.env` 中覆盖 `POSTGRES_IMAGE / PYTHON_BASE_IMAGE / NODE_BASE_IMAGE`。
|
||||
|
||||
+2
-2
@@ -1,13 +1,13 @@
|
||||
services:
|
||||
db:
|
||||
image: ${POSTGRES_IMAGE:-docker.m.daocloud.io/library/postgres:16-alpine}
|
||||
image: ${POSTGRES_IMAGE:-docker.m.daocloud.io/pgvector/pgvector:pg16}
|
||||
container_name: fquiz-db
|
||||
environment:
|
||||
POSTGRES_DB: ${POSTGRES_DB:-fquiz}
|
||||
POSTGRES_USER: ${POSTGRES_USER:-fquiz}
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-fquiz}
|
||||
ports:
|
||||
- "5432:5432"
|
||||
- "${POSTGRES_PORT:-5433}:5432"
|
||||
volumes:
|
||||
- fquiz_db_data:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
|
||||
@@ -123,3 +123,26 @@
|
||||
- 验证建议:
|
||||
- 推送触发 `main` 发布,观察部署日志不再在固定时长点报 `Run Command Timeout`。
|
||||
- 远端 `docker compose ps` 应显示 `db/api/web` 均为 `Up`(或 `healthy`)。
|
||||
|
||||
## 追加修复(DB 端口冲突 + pgvector 基线)
|
||||
|
||||
- 触发问题:
|
||||
- 远端启动 `db` 报错:`listen tcp4 0.0.0.0:5432: bind: address already in use`。
|
||||
- 服务器已有旧 PostgreSQL 占用 `5432`,当前容器无法绑定。
|
||||
- 处理:
|
||||
- `docker-compose.yml`:
|
||||
- DB 端口映射改为 `${POSTGRES_PORT:-5433}:5432`。
|
||||
- DB 默认镜像改为 `docker.m.daocloud.io/pgvector/pgvector:pg16`。
|
||||
- `.github/workflows/main.yml`:
|
||||
- 生产 compose 模板同步改为 `${POSTGRES_PORT:-5433}:5432`。
|
||||
- `.env` 自动模板新增 `POSTGRES_PORT=5433`。
|
||||
- `POSTGRES_IMAGE` 默认改为 `docker.m.daocloud.io/pgvector/pgvector:pg16`。
|
||||
- `.env.example`:
|
||||
- 新增 `POSTGRES_PORT=5433`,并同步默认 `POSTGRES_IMAGE` 为 pgvector 镜像。
|
||||
- `README.md`:
|
||||
- PostgreSQL 默认访问端口更新为 `5433`,并注明可通过 `POSTGRES_PORT` 覆盖。
|
||||
- 验证:
|
||||
- `docker compose config` 通过。
|
||||
- 展开结果确认:
|
||||
- `db.ports.published` 为 `5433`。
|
||||
- `db.image` 为 `docker.m.daocloud.io/pgvector/pgvector:pg16`。
|
||||
|
||||
Reference in New Issue
Block a user