|
|
|
@@ -159,7 +159,7 @@ PDF导出失败: I/O error on GET request for "http://emp-pdf:3100/pdf": Connect |
|
|
|
|
|
|
|
含义:`emp-monitor` 已经访问到 Docker 内网地址 `emp-pdf:3100`,但 PDF 服务端口没有进程监听,常见原因是 `emp-pdf` 容器未启动、启动后退出、正在重启,或 Node 服务未正常监听 3100。 |
|
|
|
|
|
|
|
新版 `docker-compose.yml` 已给 `emp-pdf` 增加 `/health` 健康检查,并让 `emp-monitor` 等待 `emp-pdf` 健康后再启动。若服务器仍使用旧 compose,需要先同步新的 `docker-compose.yml` 或按下面命令手动重启 PDF 服务。 |
|
|
|
新版 `docker-compose.yml` 已给 `emp-pdf` 增加健康检查,并让 `emp-monitor` 等待 `emp-pdf` 可访问后再启动。健康检查访问 `/pdf`,400 也算通过,因为不带 url 参数时返回 400 代表服务已正常监听。若服务器仍使用旧 compose,需要先同步新的 `docker-compose.yml` 或按下面命令手动重启 PDF 服务。 |
|
|
|
|
|
|
|
先看容器状态: |
|
|
|
|
|
|
|
@@ -174,18 +174,18 @@ docker compose --env-file .env -f docker-compose.yml -p emp-test ps emp-pdf emp- |
|
|
|
docker compose --env-file .env -f docker-compose.yml -p emp-test logs --tail=200 emp-pdf |
|
|
|
``` |
|
|
|
|
|
|
|
在 PDF 容器内检查健康接口: |
|
|
|
在 PDF 容器内检查 PDF 服务是否监听: |
|
|
|
|
|
|
|
```bash |
|
|
|
docker compose --env-file .env -f docker-compose.yml -p emp-test exec emp-pdf \ |
|
|
|
node -e "require('http').get('http://127.0.0.1:3100/health', r => { console.log(r.statusCode); r.pipe(process.stdout) }).on('error', e => { console.error(e.message); process.exit(1) })" |
|
|
|
node -e "require('http').get('http://127.0.0.1:3100/pdf', r => { console.log(r.statusCode); r.resume(); process.exit(r.statusCode < 500 ? 0 : 1) }).on('error', e => { console.error(e.message); process.exit(1) })" |
|
|
|
``` |
|
|
|
|
|
|
|
在同一个 Docker 网络里检查 `emp-monitor` 到 `emp-pdf` 的访问: |
|
|
|
|
|
|
|
```bash |
|
|
|
docker compose --env-file .env -f docker-compose.yml -p emp-test exec emp-monitor \ |
|
|
|
sh -lc "curl -sS http://emp-pdf:3100/health || wget -qO- http://emp-pdf:3100/health" |
|
|
|
sh -lc "curl -i http://emp-pdf:3100/pdf || wget -S -O- http://emp-pdf:3100/pdf" |
|
|
|
``` |
|
|
|
|
|
|
|
如果 `emp-pdf` 未运行或健康检查失败,先重启 PDF 服务: |
|
|
|
|