gpt4 book ai didi

docker - 将数据保存为Docker镜像的一部分吗?

转载 作者:行者123 更新时间:2023-12-02 19:35:33 24 4
gpt4 key购买 nike

我正在尝试为Ghost(https://ghost.org/)创建一个预安装了一些主题的自定义Docker镜像。我按照说明提取了官方图像(https://hub.docker.com/_/ghost/)并安装了Uno Zen(https://github.com/Kikobeats/uno-zen)主题-克隆到content/themes中,运行安装脚本等。

然后,我运行docker commit将这些更改作为现有Docker镜像的另一层进行推送。但是,下次使用该图像启动容器时,看不到主题文件应在的位置。就像所有更改都没有持久一样。

我究竟做错了什么?

最佳答案

问题是/ var / lib / ghost / content被声明为卷:

ENV GHOST_CONTENT /var/lib/ghost/content
...
VOLUME $GHOST_CONTENT

如果在Dockerfile中将目录声明为卷,则在构建或提交新镜像时,此后所做的任何修改都不会保存。

可能的解决方法是将 /var/lib/ghost/content复制到另一个 /var/lib/ghost/content.real并重新配置。您可以将这些命令添加到Dockerfile中(建议您在Dockerfile中进行更改,而不是运行和提交)。
 ENV GHOST_CONTENT /var/lib/ghost/content.real
RUN cp -a /var/lib/ghost/content "$GHOST_CONTENT"; \
gosu node ghost config --ip 0.0.0.0 --port 2368 --no-prompt --db sqlite3 --url http://localhost:2368 --dbpath "$GHOST_CONTENT/data/ghost.db"; \
gosu node ghost config paths.contentPath "$GHOST_CONTENT"

VOLUME "$GHOST_CONTENT"

来自原始Dockerfile的提示:

https://github.com/docker-library/ghost/blob/a9b023e922f4f44c4c15f765973c2939f1be9b12/1/debian/Dockerfile

关于docker - 将数据保存为Docker镜像的一部分吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45652739/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com