Docker和Drupal 8 – settings.php
我试图dockerize Drupal 8,我遇到了这个问题,在容器中运行Drupal 8并安装它,如果我然后删除容器并重新启动它,它会提示再次安装它。
事情是,当Drupal安装时,一个settings.php
文件是用数据库细节创build的。
我想创build一个系统化的单元文件来启动Drupal 8容器,即使它被删除了,也应该在下次重启时使用相同的安装。
有人build议我用ConditionPathExists=
来编写一个systemd单元文件,根据它是否在本地存在,然后mount settings.php
,但是我认为这样做不能完全正常工作,因为在容器中安装时,生成的settings.php
文件不会完成,不能坚持回主机。
那么如何解决为Drupal制作Docker容器的问题,如果它尚未安装,那么可以安装它,即使容器被移除并重build,也可以使用已安装的实例吗?
我强烈推荐使用drupal官方的docker镜像
节省了大量的时间,如果你仍然需要定制你的环境,至less你可以看看它的Dockerfile,看看它是如何完成的社区。
容器持久性
当容器停止时,可以重新启动。 所有的文件都被保存下来,包括可能已经创build的任何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时。
怎么运行的
Drupal 8build立在官方的PHP语言图像之上。
- Drupal 8.1 Dockerfile
- PHP 7 Apache Dockerfile
在PHP构build文件中注意Apache如何在前台运行?
CMD ["apache2-foreground"]
没有必要在容器内运行systemd。