是否将数据保存为Docker映像的一部分?

是否将数据保存为Docker映像的一部分?,docker,ghost-blog,ghost,Docker,Ghost Blog,Ghost,我正在尝试为Ghost()创建一个定制的Docker映像,其中预装了一些主题。我提取了官方图像()并按照说明安装了Uno-Zen()主题-克隆到内容/主题,运行安装脚本等 然后我运行了docker commit,将这些更改作为现有docker映像上的另一层推送。但是,下次使用此图像旋转容器时,我看不到主题文件应该在哪里。好像所有的变化都没有持续 我做错了什么?问题是/var/lib/ghost/content被声明为卷: ENV GHOST_CONTENT /var/lib/ghost/cont

我正在尝试为Ghost()创建一个定制的Docker映像,其中预装了一些主题。我提取了官方图像()并按照说明安装了Uno-Zen()主题-克隆到
内容/主题
,运行安装脚本等

然后我运行了
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中进行更改,而不是在run&commit中进行更改)

从原始Dockerfile中获取的提示:


井,直到。谢谢你。关于如何实现我想要做的事情,有什么建议吗?因此,根据您关于使用Dockerfile的建议,我是否也应该为Dockerfile的主题部分设置程序?是的。您可以通过组合使用
COPY
RUN
指令来实现这一点。
 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"