在Docker中运行Drupal时处理Drupal站点文件夹

时间:2018-06-30 14:28:00

标签: php docker nginx drupal drupal-8

我正在设置一个Drupal站点,以使用Docker Swarm在Web服务器上运行。 (目前集群中只有一台服务器,但是我需要集群模式才能使用docker机密。)

我正在设置服务器,因此只有一个目录“ data_to_backup”,它将构成我的备份过程的基础。 (我打算使用脚本将其压缩,加密并发送到我的保管箱。)

此过程将在我的本地笔记本电脑上运行,该笔记本电脑也可以运行docker。我可以收集最新的备份,将其解压缩到笔记本电脑的备份目录中,然后重新创建该站点。

Ngnix和php-fpm / drupal在单独的容器中运行,我有一个共享卷“ php_fpm_socket”,该卷允许nginx运行php代码。

由于nginx还需要在此目录中提供静态文件,因此我可以轻松地将站点卷安装在nginx和drupal_core容器中。

当我这样做时,我发现Drupal的其他部分坏了。当我调查时,我发现drupal需要来自其他位置的静态内容。实际上,整个drupal目录都需要共享。我的问题是我的备份站点目录是此目录的子目录。出于大小原因,我也不想将整个drupal代码库作为备份的一部分,也因为我想将代码与用户数据分开。我有一个使用添加的模块,更新的drupal版本等来重新生成drupal_core容器的过程,我应该能够在服务器上对其进行更新。

正如您从下面的撰写文件中看到的那样,我仅通过共享核心目录进行了漏洞修复。但现在将不再提供ROBOTS.txt之类的文件。

有人知道更好的方法来处理这种分离吗?

version: "3.1"

secrets:
  codeserv_mysqlrootpassword:
    external: true
  codeserv_ssl_cert:
    external: true
  codeserv_ssl_key:
    external: true

volumes:
  php_fpm_socket:

  drupal_core:

services:
  db:
    image: mariadb:10.3.7
    deploy:
      restart_policy:
        condition: any
    secrets:
     - codeserv_mysqlrootpassword
    environment:
      MYSQL_DATABASE: unused_default_database
      MYSQL_ROOT_PASSWORD_FILE: /run/secrets/codeserv_mysqlrootpassword
    volumes:
    - ../data_to_backup/code_site/db:/var/lib/mysql

  code_site:
    image: code_site:latest
    deploy:
      restart_policy:
        condition: any
    volumes:
    - ../data_to_backup/code_site/drupal_sites:/drupal_www/sites
    - drupal_core:/drupal_www/core
    - php_fpm_socket:/var/run/php-fpm7

  code_site_nginx:
    image: nginx:1.13.0-alpine
    secrets:
     - codeserv_ssl_cert
     - codeserv_ssl_key
    volumes:
    - php_fpm_socket:/var/run/php-fpm7
    - ../data_to_backup/code_site/drupal_sites:/drupal_www/sites
    - drupal_core:/drupal_www/core
    - ../data_to_backup/code_site/nginx_conf_d:/etc/nginx/conf.d
    ports:
    - 80:80
    - 443:443

0 个答案:

没有答案