Docker和Drupal 8 - settings.php

时间:2016-03-06 01:02:15

标签: drupal docker systemd

我正在尝试将Drupal 8停靠,并且我遇到了这个问题,在容器中运行Drupal 8并安装它之后,如果我然后移除容器并再次启动它,它会提示再次安装它。

问题是,当安装Drupal时,会创建一个包含数据库详细信息的settings.php文件。

我想创建一个systemd单元文件,用于以智能方式启动Drupal 8容器,即使它已被删除,也应该在下次使用相同的安装时再次启动。

有人建议我用ConditionPathExists=编写一个systemd单元文件,根据它是否在本地安装settings.php,但我认为这不会完全有效,因为安装在容器中时,生成的settings.php文件不会保留回主机。

那么我如何解决为Drupal制作Docker容器的问题,如果尚未安装它,那么即使容器被删除并重建,也要使用已安装的实例?

1 个答案:

答案 0 :(得分:1)

我强烈推荐使用drupal的官方docker镜像

节省了大量时间,如果您仍需要自定义环境,至少可以查看其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时。

如何运作

Drupal 8构建在官方PHP语言映像之上。

在PHP构建文件中,注意如何在foreground

中运行Apache
CMD ["apache2-foreground"]

不需要在容器内运行systemd。