我正在设置一个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