forked from DevOps/deploy.stack
fix(honcho): 容器端口必须用容器内端口,不能用 host 映射端口
vm61 honcho-api 一直 unhealthy + deriver 反复重启,根因是 stack.yml 把
宿主机映射端口 (HONCHO_DB_PORT=25432) 当成了容器间互访端口:
- DB_CONNECTION_URI 里 database:${HONCHO_DB_PORT} 应为 database:5432
- healthcheck URL localhost:18000 应为 localhost:8000
HONCHO_API_PORT/DB_PORT/REDIS_PORT 仅用于宿主机 ports 映射段,
容器之间互访必须硬编码容器内端口 (5432/6379/8000)。
- 改 stack.yml api + deriver 段 DB_CONNECTION_URI 端口为 5432
- 改 stack.yml api 段 healthcheck URL 为 localhost:8000
- readme 关键陷阱加第 6 条:"容器端口 vs 宿主机端口不可混用"
- vm61 4 honcho 容器全部 healthy,deriver queue processor 已正常运行
This commit is contained in:
@@ -253,6 +253,20 @@ Honcho 是 **AGPL-3.0**,对网络服务部署有"用户可获取源码"的要
|
|||||||
|
|
||||||
honcho-self-hosted 相对官方 compose 的一个改进:**移除了**`trust` 认证(官方默认的 dev 用法),改用强密码 + scram-sha-256。生产环境务必保留这个设置。
|
honcho-self-hosted 相对官方 compose 的一个改进:**移除了**`trust` 认证(官方默认的 dev 用法),改用强密码 + scram-sha-256。生产环境务必保留这个设置。
|
||||||
|
|
||||||
|
### 6. 容器端口 vs 宿主机端口不可混用
|
||||||
|
|
||||||
|
**容器之间互访必须用容器内端口(5432/6379/8000)**,不能用宿主机映射端口(如 `HONCHO_DB_PORT=25432`)。错误示例:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# ❌ 错:${HONCHO_DB_PORT} 是宿主机端口 25432,容器内根本没监听这个
|
||||||
|
DB_CONNECTION_URI=postgresql+psycopg://honcho:pw@database:${HONCHO_DB_PORT}/honcho
|
||||||
|
|
||||||
|
# ✅ 对:硬编码容器内端口 5432
|
||||||
|
DB_CONNECTION_URI=postgresql+psycopg://honcho:pw@database:5432/honcho
|
||||||
|
```
|
||||||
|
|
||||||
|
同样 healthcheck 也用容器内端口 `localhost:8000`,**不是** `localhost:18000`(宿主映射端口)。
|
||||||
|
|
||||||
## 故障排查
|
## 故障排查
|
||||||
|
|
||||||
| 症状 | 排查命令 |
|
| 症状 | 排查命令 |
|
||||||
|
|||||||
+3
-3
@@ -35,7 +35,7 @@ services:
|
|||||||
- "${HONCHO_API_PORT:-8000}:8000"
|
- "${HONCHO_API_PORT:-8000}:8000"
|
||||||
environment:
|
environment:
|
||||||
- TZ=Asia/Shanghai
|
- TZ=Asia/Shanghai
|
||||||
- DB_CONNECTION_URI=postgresql+psycopg://${HONCHO_DB_USER}:${HONCHO_DB_PASSWORD}@database:${HONCHO_DB_PORT}/${HONCHO_DB_NAME}
|
- DB_CONNECTION_URI=postgresql+psycopg://${HONCHO_DB_USER}:${HONCHO_DB_PASSWORD}@database:5432/${HONCHO_DB_NAME}
|
||||||
- CACHE_URL=redis://redis:${HONCHO_REDIS_PORT}/0?suppress=true
|
- CACHE_URL=redis://redis:${HONCHO_REDIS_PORT}/0?suppress=true
|
||||||
- CACHE_ENABLED=true
|
- CACHE_ENABLED=true
|
||||||
- LOG_LEVEL=${HONCHO_LOG_LEVEL:-INFO}
|
- LOG_LEVEL=${HONCHO_LOG_LEVEL:-INFO}
|
||||||
@@ -64,7 +64,7 @@ services:
|
|||||||
- CMD
|
- CMD
|
||||||
- /app/.venv/bin/python
|
- /app/.venv/bin/python
|
||||||
- -c
|
- -c
|
||||||
- "import urllib.request; urllib.request.urlopen('http://localhost:18000/health', timeout=2).read()"
|
- "import urllib.request; urllib.request.urlopen('http://localhost:8000/health', timeout=2).read()"
|
||||||
interval: 10s
|
interval: 10s
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 10
|
retries: 10
|
||||||
@@ -88,7 +88,7 @@ services:
|
|||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
environment:
|
environment:
|
||||||
- TZ=Asia/Shanghai
|
- TZ=Asia/Shanghai
|
||||||
- DB_CONNECTION_URI=postgresql+psycopg://${HONCHO_DB_USER}:${HONCHO_DB_PASSWORD}@database:${HONCHO_DB_PORT}/${HONCHO_DB_NAME}
|
- DB_CONNECTION_URI=postgresql+psycopg://${HONCHO_DB_USER}:${HONCHO_DB_PASSWORD}@database:5432/${HONCHO_DB_NAME}
|
||||||
- CACHE_URL=redis://redis:${HONCHO_REDIS_PORT}/0?suppress=true
|
- CACHE_URL=redis://redis:${HONCHO_REDIS_PORT}/0?suppress=true
|
||||||
- CACHE_ENABLED=true
|
- CACHE_ENABLED=true
|
||||||
- NAMESPACE=${HONCHO_NAMESPACE:-honcho}
|
- NAMESPACE=${HONCHO_NAMESPACE:-honcho}
|
||||||
|
|||||||
Reference in New Issue
Block a user