2017-08-12 64 views
1

我正在尝试为Ghost(https://ghost.org/)创建一个自定义Docker镜像,并预装了一些主题。我把官方图片(https://hub.docker.com/_/ghost/)并安装了欧诺禅(https://github.com/Kikobeats/uno-zen)作为主题中的说明 - 克隆到content/themes,运行安装脚本等将数据保存为Docker镜像的一部分?

然后我跑到docker commit推动这些变化对现有的另一层Docker镜像。但是,下次我使用这个图像旋转容器时,我没有看到他们应该在哪里的主题文件。这就像没有任何变化持续下去。

我在做什么错?

回答

1

的问题是,在/ var/lib中/鬼/内容被声明为一个卷:

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

当一个目录被声明为在Dockerfile卷,它所做的任何修改都不会事后保存当建立或提交新的图像。

可能的解决方法是将/var/lib/ghost/content复制到另一个,例如/var/lib/ghost/content.real并重新配置。您可以将这些命令添加到您的Dockerfile(我建议您在Dockerfile中进行更改,而不是运行& commit)。

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

+0

以及TIL。感谢这一点。任何关于我如何能够实现我想要做的事情的建议? – user1649740

+0

我用可能的解决方法编辑了我的答案。 –

+0

因此,根据您使用Dockerfile的建议,我是否应该为Dockerfile的主题部分进行设置过程? – user1649740