我正在尝试对Drupal 8进行泊坞化,并且遇到了以下问题:在容器中运行Drupal 8并安装它之后,如果我随后删除该容器并再次启动它,它会提示再次安装它。
事实是,安装Drupal后,将使用数据库详细信息创建一个settings.php
文件。
我想创建一个systemd单元文件,以一种灵巧的方式启动Drupal 8容器,即使将其删除,也应该在下一次安装时再次启动。
有人建议我编写一个带有ConditionPathExists=
的systemd单元文件,以根据是否在本地安装settings.php
来挂载它,但是我认为这不能完全起作用,因为在容器中进行安装时,生成的settings.php
文件将无法持久保存到主机。
那么,如何解决为尚未安装的Drupal制作Docker容器的问题(如果尚未安装),然后从那时起使用已安装的实例,即使已移除并重建该容器也是如此?
最佳答案
我强烈建议使用正式的docker镜像进行drupal
节省了大量时间,并且如果您仍然需要自定义环境,至少可以查看其Dockerfile并查看社区的工作方式。
容器持久性
容器停止后,可以重新启动。它的所有文件都将保留,包括可能已创建的所有settings.php文件。
另一方面,全新的容器始终会从头开始,没有避免这种情况的简单方法。要跨容器实例持久化数据,您需要使用卷。
https://docs.docker.com/engine/userguide/containers/dockervolumes/
这是完成的过程:
#
# Create a data container
#
docker create \
-v /var/www/html/sites \
-v /var/www/private \
--name my-data \
drupal
#
# Run drupal without a db container (select sqlite on first install)
#
docker run --volumes-from my-data --name my-drupal -p 8080:80 -d drupal
注意:
这个怎么运作
Drupal 8建立在官方PHP语言镜像之上。
在PHP构建文件中,请注意foreground中如何运行Apache?
CMD ["apache2-foreground"]
无需在容器内运行systemd。
关于drupal - Docker和Drupal 8-settings.php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35821846/