diff --git a/podman-ai.md b/podman-ai.md new file mode 100644 index 0000000..7153f1a --- /dev/null +++ b/podman-ai.md @@ -0,0 +1,105 @@ +### 部署要求 + +1. **使用 podman**(不是 docker) +2. **使用 `podman-compose` 方式部署**,配置文件为 `podman-compose.yml` 和 `.env` +3. 创建名为 `cells-pod` 的 pod,宿主机暴露端口 `8080` +4. MariaDB 和 Cells 容器加入同一个 pod,共享网络命名空间(**不使用 `--network`**) +5. **MariaDB 配置** + - 镜像:`docker.io/library/mariadb` + - 环境变量从 `.env` 读取:`MYSQL_ROOT_PASSWORD`、`MYSQL_DATABASE`、`CELLS_DB_USER`、`CELLS_DB_PASSWORD` + - 数据持久化:`./mariadb_data` + - 配置健康检查 +6. **Cells 配置** + - 镜像:`docker.io/pydio/cells` + - 环境变量从 `.env` 读取:`CELLS_SITE_BIND=0.0.0.0:8080`、`CELLS_SITE_EXTERNAL`、`CELLS_SITE_LABEL` + - 数据持久化:`./cells_working` + - 依赖 MariaDB 健康后再启动 +7. 部署完成后**检查容器状态** + +--- + +### 📁 前置准备(确保您的文件就绪) + +请确认当前目录下已包含以下两个文件: + +- `podman-compose.yml`(您之前提供的版本,含数据目录注释) +- `.env.example`(环境变量模板) + +如果还没有 `.env` 文件,请执行: + +```bash +cp .env.example .env +``` + +**然后编辑 `.env` 文件**,填入真实密码和域名(不要留空): + +```ini +MYSQL_ROOT_PASSWORD=您的强密码 +MYSQL_DATABASE=pydiocells +CELLS_DB_USER=pydio +CELLS_DB_PASSWORD=您的数据库密码 +CELLS_EXTERNAL=https://localhost:8080 # 或您的实际域名 +CELLS_SITE_LABEL=MyCells +HOST_PORT=8080 +``` + +> ⚠️ `.env` 中的密码请勿包含 `$ & * !` 等特殊字符,避免解析错误。 + +--- + +### 🚀 一键部署命令 + +```bash +# 创建数据目录(避免权限问题) +mkdir -p mariadb_data cells_working + +# 启动所有服务(自动创建 pod) +podman-compose up -d +``` + +--- + +### 🔍 部署后检查 + +```bash +# 查看 pod 状态 +podman pod ps + +# 查看容器状态 +podman ps + +# 查看日志(确认无报错) +podman logs pydio-mariadb +podman logs pydio-cells + +# 测试访问(根据您的 CELLS_EXTERNAL 配置) +curl -k https://localhost:8080 +``` + +如果一切正常,您会看到 Pydio Cells 的安装向导页面。 + +--- + +### 🧹 停止与清理 + +```bash +# 停止容器(保留 pod 和数据) +podman-compose down + +# 彻底删除 pod(会同时删除容器) +podman pod rm -f cells-pod + +# 如需清理数据目录(谨慎) +rm -rf mariadb_data cells_working +``` + +--- + +### ⚠️ 常见问题快速解决 + +| 问题 | 解决方法 | +| ------------------------------------- | ----------------------------------------------------------------------------------------------- | +| `podman-compose: command not found` | 安装:`sudo dnf install podman-compose` 或 `pip install podman-compose` | +| 端口 8080 已被占用 | 修改 `.env` 中的 `HOST_PORT`,例如 `HOST_PORT=8081`,并确保 `CELLS_EXTERNAL` 也对应修改 | +| Cells 无法连接 MariaDB | 检查 pod 内网络:`podman exec -it pydio-cells ping mariadb`(应能通) | +| MariaDB 健康检查一直失败 | 查看日志:`podman logs pydio-mariadb`,等待 30 秒后重试 | diff --git a/podman-compose.yml b/podman-compose.yml new file mode 100644 index 0000000..8eb04cd --- /dev/null +++ b/podman-compose.yml @@ -0,0 +1,37 @@ +services: + mariadb: + image: docker.io/library/mariadb:11 + container_name: pydio-mariadb + restart: unless-stopped + pod: cells-pod + environment: + MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} + MYSQL_DATABASE: ${MYSQL_DATABASE} + MYSQL_USER: ${CELLS_DB_USER} + MYSQL_PASSWORD: ${CELLS_DB_PASSWORD} + volumes: + - ./mariadb_data:/var/lib/mysql + healthcheck: + test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] + interval: 10s + timeout: 5s + retries: 5 + + cells: + image: docker.io/pydio/cells:latest + container_name: pydio-cells + restart: unless-stopped + pod: cells-pod + ports: + - "${HOST_PORT}:8080" + environment: + CELLS_SITE_BIND: 0.0.0.0:8080 + CELLS_SITE_EXTERNAL: ${CELLS_EXTERNAL} + CELLS_SITE_LABEL: ${CELLS_SITE_LABEL} + volumes: + - ./cells_working:/var/cells + # 数据目录单独挂载(可选) + - ./Storage_data:/var/cells/data + depends_on: + mariadb: + condition: service_healthy \ No newline at end of file