你好,
容器的文件系统本质上是无状态的。你直接在容器里修改的文件,每次 Restart 或 Redeploy 时都会被 Image 的默认内容覆盖,这是 Docker 的设计使然。要让修改永久保留,需要把改动“写进”新的 Image,而不是写进运行中的容器。
由于你提到目前是自己在维护这份项目,建议改成以下其中一种部署方式:
方法 1:把修改写回源代码,用 Zeabur 直接从 Git 构建(推荐)
- Fork 或创建一个新的 Git repo,把原本 Docker 镜像对应的源代码放进去。
- 把你的修改 commit 上去。
- 在 Zeabur 创建新服务,改用“Deploy from GitHub”的方式,让 Zeabur 从你的 repo 自动构建。
- 以后只要 push 代码,Zeabur 就会自动 rebuild,不会被上游 Image 覆盖。
方法 2:自己构建 Docker Image 再指向新的 Image
- 把修改写进 Dockerfile 或源代码,构建出自己的 Image。
- Push 到你自己的 registry(GitHub Container Registry、Docker Hub 都可以)。
- 在 Zeabur 服务的 Settings 把 Image 指向你自己的 Image(例如 ghcr.io/<your-account>/<your-image>:latest)。
- 这样 Restart 时 pull 到的就是你自己维护的版本。
如果只是少量配置文件之类的变动,另一个选项是用 Volumes 把特定目录挂载成持久存储,但这种方式只适合用来保存“数据”而不适合保存“代码修改”,对你这个情况不是理想解法。
先确认一下这几个方向是否有符合你的需求?如果实际情境不太一样,可以再描述一下你目前修改的方式跟想达成的目标,我再帮你看看更具体的做法。