我正在尝试将Drupal 8停靠,并且我遇到了这个问题,在容器中运行Drupal 8并安装它之后,如果我然后移除容器并再次启动它,它会提示再次安装它。
问题是,当安装Drupal时,会创建一个包含数据库详细信息的settings.php
文件。
我想创建一个systemd单元文件,用于以智能方式启动Drupal 8容器,即使它已被删除,也应该在下次使用相同的安装时再次启动。
有人建议我用ConditionPathExists=
编写一个systemd单元文件,根据它是否在本地安装settings.php
,但我认为这不会完全有效,因为安装在容器中时,生成的settings.php
文件不会保留回主机。
那么我如何解决为Drupal制作Docker容器的问题,如果尚未安装它,那么即使容器被删除并重建,也要使用已安装的实例?
答案 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 8构建在官方PHP语言映像之上。
在PHP构建文件中,注意如何在foreground?
中运行ApacheCMD ["apache2-foreground"]
不需要在容器内运行systemd。