Ente 自托管报 post_start is not allowed 错误怎么解决(Docker Compose 版本问题)
【免费下载链接】ente💚 End-to-end encrypted cloud for everything.项目地址: https://gitcode.com/GitHub_Trending/en/ente
当你用 Ente 的 quickstart 脚本或 Docker Compose 方式自托管 Ente 时,启动集群如果卡在:
validating compose.yaml: services.minio Additional property post_start is not allowed说明 Docker 在解析compose.yaml时就失败了,集群根本没有启动。原因很具体:Ente 的 compose 文件(例如 quickstart 脚本生成的my-ente/compose.yaml,或仓库中的 server/config/compose.yaml)在minio服务上使用了post_start生命周期钩子来初始化 MinIO 的存储桶,而这个钩子要求 Docker Compose 版本 2.30.0 及以上(见 docs/docs/self-hosting/troubleshooting/docker.md)。安装要求文档 也明确写着:Ente 要求 Docker Compose 2.30 或更高版本,并且只支持docker compose命令,docker-compose已不再支持。
先确认你的 Docker Compose 版本
用下面的命令查看当前版本(这是 quickstart.sh 脚本检查版本时使用的同一命令):
docker compose version --short如果输出小于 2.30.0,就是本文描述的问题。如果你还看到类似的错误:
services.postgres.healthcheck Additional property start_interval is not allowed这是同一个根因——start_interval属性同样需要较新的 Docker Compose 版本,解法与下文相同。
主路径:升级 Docker Compose
文档给出的最简解决方案就是升级 Docker Compose 到 2.30.0+。升级完成后,按文档提示重启集群,让改动生效:
docker compose down docker compose updocker compose down会停掉并移除当前项目(my-ente目录)的容器,docker compose up重新拉起,两个命令都只影响当前 compose 项目,不会删除数据卷。
无法升级时的替代方案:改用独立 provision 服务
如果环境限制让你无法升级 Docker Compose,文档给出了等价做法:从compose.yaml的minio服务中删掉整个post_start钩子,然后新增一个minio-provision服务来完成同样的存储桶初始化:
minio-provision: image: minio/mc depends_on: - minio volumes: - minio-data:/data networks: - internal entrypoint: | sh -c ' #!/bin/sh while ! mc alias set h0 http://minio:3200 your_minio_user your_minio_pass do echo "waiting for minio..." sleep 0.5 done cd /data mc mb -p b2-eu-cen mc mb -p wasabi-eu-central-2-v3 mc mb -p scw-eu-fr-v3 '该片段来自 docs/docs/self-hosting/troubleshooting/docker.md,放入services:之下。两个占位符需要替换成你的 MinIO 实际凭据:
your_minio_user、your_minio_pass替换为minio服务环境里的MINIO_ROOT_USER/MINIO_ROOT_PASSWORD的值。quickstart 脚本会在运行时生成这组凭据并写入my-ente/compose.yaml的minio服务下,直接照抄那里的值即可;- 其余部分(
minio-data卷、三个mc mb -p建桶命令)与post_start钩子执行的完全一致,不需要改动。
修改后同样执行docker compose down和docker compose up让新配置生效。
另外注意一个文档中记录的相邻问题:如果你的日志里反复出现Waiting for minio...,可能是 compose 文件里用了已废弃的mc config host h0 add命令,改成mc alias set h0即可(当前仓库里的 server/config/compose.yaml 已经使用mc alias set写法)。
验证集群已正常启动
启动后,post_start is not allowed的校验错误不再出现,容器依次拉起即为通过。quickstart 安装方式下还可以按 quickstart 文档 做一次 API 冒烟测试:
curl localhost:8080/ping能收到响应说明 museum(API 服务)已正常运行;随后访问http://localhost:3000即可打开 Ente Photos 页面。
限制与边界
- 上述替代方案只适用于 compose 文件本身使用的
post_start钩子(即 quickstart 脚本或 Docker Compose 安装路径生成的文件);文档中未覆盖其他自定义拓扑。 - 修改
compose.yaml/museum.yaml后必须docker compose down+docker compose up才会生效,文档对此有明确提示。 - 长期来看,Ente 的官方要求是 Docker Compose 2.30+(requirements 文档),删除
post_start只是无法升级时的临时等价方案。
【免费下载链接】ente💚 End-to-end encrypted cloud for everything.项目地址: https://gitcode.com/GitHub_Trending/en/ente
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考