fix: podman can't return even succeed

This commit is contained in:
2026-09-21 13:30:53 +08:00
parent 0e1b01764d
commit 57d9eeeb79
4 changed files with 234 additions and 85 deletions

View File

@@ -85,11 +85,20 @@ Error: "lab-backend" is not a valid container, cannot be used as a dependency ..
./scripts/podman-deploy.sh diagnose # 部署失败时输出诊断信息(镜像/容器/日志)
```
脚本做了三件关键的事,规避 podman-compose 的兼容性问题:
脚本做了四件关键的事,规避 podman-compose 的兼容性问题:
1. `podman build` 显式构建 `lab-backend:latest` / `lab-frontend:latest`,避免短名拉取;
2. `up -d --no-deps` 按「数据库 → 后端 → 前端」逐个启动并等待就绪,绕过 compose 依赖查找;
3. `down` 直接按容器名清理,避免对不存在容器的报错噪音。
2. 启动前自动生成 `.podman-compose.generated.yml`(从 `docker-compose.yml` 中剔除 `depends_on`),
避免旧版 podman-compose 在 `up` 时等待依赖健康检查而卡住;
3. 按「数据库 → 后端 → 前端」逐个启动并等待就绪(MariaDB 用 `healthcheck.sh`,后端/前端用 HTTP 探测);
4. `down` 直接按容器名清理,避免对不存在容器的报错噪音。
**防卡死**:所有外部命令都带超时,任何一步超时会打印原因并退出,不会无限等待。
可用环境变量调节:`CMD_TIMEOUT`(单条命令,默认 60s)、`BUILD_TIMEOUT`(构建,默认 1800s)、
`READY_TRIES`(就绪轮询次数,默认 60 次 × 2s);用 `DEBUG=1 ./scripts/podman-deploy.sh up`
可以看到每一步实际执行的命令,定位卡在哪一步。
镜像已构建过时可跳过构建:`./scripts/podman-deploy.sh up --no-build`。
若已有历史失败状态,先清理再重来: