fix: podman can't deploy

This commit is contained in:
2026-09-21 13:22:37 +08:00
parent 3fdce3ce94
commit 0e1b01764d
6 changed files with 214 additions and 49 deletions

View File

@@ -52,7 +52,7 @@ docker compose up -d --build # 构建并启动 mariadb + backend + frontend
# 后端:http://localhost:8080
docker compose ps # 查看健康状态
docker compose down # 停止容器,保留数据库数据卷
docker compose down -v # 停止并清空数据库(下次启动重建演示数据)
docker compose down -v # 停止容器并删除数据目录(下次启动重建演示数据)
```
- 编排:`mariadb:11.4`(数据持久化到命名卷)+ 后端多阶段构建镜像(JRE 21,非 root 运行)+ Nginx 前端镜像
@@ -77,10 +77,24 @@ Error: "lab-backend" is not a valid container, cannot be used as a dependency ..
而系统未配置 `unqualified-search-registries`。**先显式构建镜像即可解决**:
```bash
./scripts/podman-deploy.sh up # 一键:构建镜像 -> 启动 -> 健康检查 -> 打印访问地址
./scripts/podman-deploy.sh down # 停止(保留数据库数据卷)
./scripts/podman-deploy.sh down-v # 停止并清空数据库
./scripts/podman-deploy.sh logs # 查看日志
./scripts/podman-deploy.sh up # 一键:构建镜像 -> 按序启动 -> 健康检查 -> 打印访问地址
./scripts/podman-deploy.sh status # 查看容器状态
./scripts/podman-deploy.sh down # 停止(保留数据目录)
./scripts/podman-deploy.sh down-v # 停止并删除数据目录(重建演示数据)
./scripts/podman-deploy.sh logs # 跟踪后端日志
./scripts/podman-deploy.sh diagnose # 部署失败时输出诊断信息(镜像/容器/日志)
```
脚本做了三件关键的事,规避 podman-compose 的兼容性问题:
1. `podman build` 显式构建 `lab-backend:latest` / `lab-frontend:latest`,避免短名拉取;
2. `up -d --no-deps` 按「数据库 → 后端 → 前端」逐个启动并等待就绪,绕过 compose 依赖查找;
3. `down` 直接按容器名清理,避免对不存在容器的报错噪音。
若已有历史失败状态,先清理再重来:
```bash
./scripts/podman-deploy.sh down-v && ./scripts/podman-deploy.sh up
```
手动等价步骤:
@@ -101,7 +115,9 @@ Podman 注意事项:
`~/.config/containers/registries.conf` 配置 `unqualified-search-registries = ["docker.io"]`
- **旧版 podman-compose**:若提示不支持 `depends_on.condition`,请升级到 1.0.6+,
或先 `podman-compose up -d mariadb`,等数据库健康后再 `podman-compose up -d backend frontend`
- **SELinux(Fedora/RHEL)**:本项目只使用命名卷,无需额外 `:Z` 标记;如自定义 bind mount 请自行加 `:Z`
- **数据目录**:数据库数据以 bind mount 方式保存在 `DATA_DIR`(默认 `./mariadb-data`,已在
`.gitignore` 中忽略),`down-v` 会删除该目录;目录中含历史 binlog 等文件时属正常现象
- **SELinux(Fedora/RHEL)**:挂载已带 `:Z` 自动打标;若自定义其他 bind mount 请同样加 `:Z`
### 5. 演示账号