我正在尝试修改Drupal 8,并且遇到了这样的问题:在容器中运行Drupal 8并安装它之后,如果我然后删除容器并重新启动它,它会提示再次安装它。
问题是,在安装Drupal时,会创建一个带有数据库详细信息的settings.php文件。
我想要创建一个systemd单元文件,以便以一种智能的方式启动Drupal 8容器,即使它被删除了,下次也应该用相同的安装重新启动。
有人建议我使用ConditionPathExists=编写一个systemd单元文件,根据它是否在本地安装settings.php,但是我认为这不会完全起作用,因为在容器中安装时,生成的settings.php文件不会被持久化回主机。
那么,我如何解决为Drupal创建一个Docker容器的问题--如果Drupal还没有安装它,那么从那时起,即使删除和重建容器,也要使用已安装的实例?
发布于 2016-03-06 05:06:47
我强烈建议使用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中,注意如何在前景中运行Apache
CMD ["apache2-foreground"]不需要在容器内运行系统。
https://stackoverflow.com/questions/35821846
复制相似问题