lakedrops / docker4drupal
Composer 插件,用于为 Docker 准备本地 Drupal 开发环境。
Requires
- php: >=8.1
- composer-plugin-api: ^2
- ext-json: *
- henrywhitaker3/healthchecks-io: ^1.0
- lakedrops/ahoy: ^1.8||dev-develop
- lakedrops/composer-json-utils: ^2.5||dev-develop
- lakedrops/docker-traefik: ^3.3||dev-develop
Requires (Dev)
- composer/composer: ^2
- lakedrops/drupal-environment: ^3.2||dev-develop
- roave/security-advisories: dev-latest
- dev-main
- v3.10.34
- v3.10.33
- v3.10.32
- v3.10.31
- v3.10.30
- v3.10.29
- v3.10.28
- v3.10.27
- v3.10.26
- v3.10.25
- v3.10.24
- v3.10.23
- v3.10.22
- v3.10.21
- v3.10.20
- v3.10.19
- v3.10.18
- v3.10.17
- v3.10.16
- v3.10.15
- v3.10.14
- v3.10.13
- v3.10.12
- v3.10.11
- v3.10.10
- v3.10.9
- v3.10.8
- v3.10.7
- v3.10.6
- v3.10.5
- v3.10.4
- v3.10.3
- v3.10.2
- v3.10.1
- v3.10.0
- v3.9.19
- v3.9.18
- v3.9.17
- v3.9.16
- v3.9.15
- v3.9.14
- v3.9.13
- v3.9.12
- v3.9.11
- v3.9.10
- v3.9.9
- v3.9.8
- v3.9.7
- v3.9.6
- v3.9.5
- v3.9.4
- v3.9.3
- v3.9.2
- v3.9.1
- v3.9.0
- v3.8.12
- v3.8.11
- v3.8.10
- v3.8.9
- v3.8.8
- v3.8.7
- v3.8.6
- v3.8.5
- v3.8.4
- v3.8.3
- v3.8.2
- v3.8.1
- v3.8.0
- v3.7.60
- v3.7.59
- v3.7.58
- v3.7.57
- v3.7.56
- v3.7.55
- v3.7.54
- v3.7.53
- v3.7.52
- v3.7.51
- v3.7.50
- v3.7.49
- v3.7.48
- v3.7.47
- v3.7.46
- v3.7.45
- v3.7.44
- v3.7.43
- v3.7.42
- v3.7.41
- v3.7.40
- v3.7.39
- v3.7.38
- v3.7.37
- v3.7.36
- v3.7.35
- v3.7.34
- v3.7.33
- v3.7.32
- v3.7.31
- v3.7.30
- v3.7.29
- v3.7.28
- v3.7.27
- v3.7.26
- v3.7.25
- v3.7.24
- v3.7.23
- v3.7.22
- v3.7.21
- v3.7.20
- v3.7.19
- v3.7.18
- v3.7.17
- v3.7.16
- v3.7.15
- v3.7.14
- v3.7.13
- v3.7.12
- v3.7.11
- v3.7.10
- v3.7.9
- v3.7.8
- v3.7.7
- v3.7.6
- v3.7.5
- v3.7.4
- v3.7.3
- v3.7.2
- v3.7.1
- v3.7.0
- v3.6.7
- v3.6.6
- v3.6.5
- v3.6.4
- v3.6.3
- v3.6.2
- v3.6.1
- v3.6.0
- v3.5.7
- v3.5.6
- v3.5.5
- v3.5.4
- v3.5.3
- v3.5.2
- v3.5.1
- v3.5.0
- v3.4.1
- v3.4.0
- v3.3.11
- v3.3.10
- v3.3.9
- v3.3.8
- v3.3.7
- v3.3.6
- v3.3.5
- v3.3.4
- v3.3.3
- v3.3.2
- v3.3.1
- v3.3.0
- v3.2.5
- v3.2.4
- v3.2.3
- v3.2.2
- v3.2.1
- v3.2.0
- v3.1.6
- v3.1.5
- v3.1.4
- v3.1.3
- v3.1.2
- v3.1.1
- v3.1.0
- v3.0.4
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v2.1.0
- v2.0.2
- v2.0.1
- v2.0.0
- v1.17.0
- v1.16.2
- v1.16.1
- v1.16.0
- v1.15.1
- v1.15.0
- v1.14.0
- v1.13.2
- v1.13.1
- v1.13.0
- v1.12.2
- v1.12.1
- v1.12.0
- v1.11.7
- v1.11.6
- v1.11.5
- v1.11.4
- v1.11.3
- v1.11.2
- v1.11.1
- v1.11.0
- v1.10.3
- v1.10.2
- v1.10.1
- v1.10.0
- v1.9.9
- v1.9.8
- v1.9.7
- v1.9.6
- v1.9.5
- v1.9.4
- v1.9.3
- v1.9.2
- v1.9.1
- v1.9.0
- v1.8.8
- v1.8.7
- v1.8.6
- v1.8.5
- v1.8.4
- v1.8.3
- v1.8.2
- v1.8.1
- v1.8.0
- v1.7.0
- v1.6.1
- v1.6.0
- v1.5.0
- v1.4.2
- v1.4.1
- v1.4.0
- v1.3.0
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.1
- 1.0.0
- v0.9.0
- v0.8.7
- v0.8.6
- v0.8.5
- v0.8.4
- v0.8.3
- v0.8.2
- v0.8.1
- v0.8.0
- v0.7.3
- v0.7.2
- v0.7.1
- v0.7.0
- v0.6.0
- v0.5.0
- v0.4.2
- v0.4.1
- v0.4.0
- v0.3.1
- v0.3.0
- v0.2.8
- v0.2.7
- v0.2.6
- v0.2.5
- v0.2.4
- v0.2.3
- v0.2.2
- v0.2.1
- v0.2.0
- v0.1.4
- v0.1.3
- v0.1.2
- v0.1.1
- v0.1.0
- dev-develop
- dev-nginx/custom-preset
- dev-issue-60/solr-mount-volume
- dev-issue-60/solr
- dev-issue-59
This package is auto-updated.
Last update: 2024-09-13 15:37:08 UTC
README
此 Composer 插件使用来自 Docker4Drupal 的框架,由 Wodby 提供,为 Docker 准备您的本地开发环境。
需求
此插件最好在 L3D 中使用,无需满足其他要求。
在您的 Drupal 项目中安装
这是一个 Composer 插件。它可以在基于 Composer 的 Drupal 安装中使用,也可以在未使用 Composer 的纯 Drupal 中使用。
如果您正在使用 D8 项目模板 或 D9 项目模板 的最新版本,此 docker4drupal 插件将作为 Drupal 开发环境 的依赖项自动安装。
在其他所有情况下,只需键入以下内容即可安装
composer require lakedrops/docker4drupal
这将安装和配置所有必要的文件,以便您可以立即启动 Docker 环境,而无需任何其他设置。正在执行的操作
- 在您的项目根目录中创建和配置 docker-compose.yml
- 在您的设置目录中创建和配置 settings.docker.php
- 修改您的 settings.php 以加载 settings.docker.php(如果存在)
- 在当前目录的
drush
子目录中创建 Drush 设置、别名和 shell-别名 - 在
~/.traefik
目录中配置并(重新)启动单个 Docker Traefik 服务,该目录充当任何数量并行运行的 Docker4Drupal 项目的代理。此服务由 LakeDrops Traefik Library 提供。 - 将新文件添加到 .gitignore,因为这些文件通常不需要提交
在纯 Drupal 项目中安装
在开始之前,您应该在项目根目录中创建(或添加到现有).lakedrops.yml
,如下所示
docker4drupal:
webroot: relative/path/to/drupal/core
之后,您可以调用
composer require lakedrops/docker4drupal
然后一切都会为您配置好。
用法
所有命令都需要从您主要 Drupal 项目的根目录调用。
更新 Docker-Compose 配置
# With Ahoy
ahoy update
# Directly
composer lakedrops:docker4drupal
启动 Docker 容器
# With Ahoy
ahoy up
# Directly
docker-compose up -d
停止 Docker 容器
# With Ahoy
ahoy stop
# Directly
docker-compose stop
访问服务
以下服务在 Docker 容器运行时在浏览器中可用
- 仪表板:http://docker.localhost:8080
- Drupal 网站:http://[PROJECTNAME].docker.localhost:8000
- PhpMyAdmin:http://pma.[PROJECTNAME].docker.localhost:8000
- Mailhog:http://mailhog.[PROJECTNAME].docker.localhost:8000
- Solr:http://solr.[PROJECTNAME].docker.localhost:8000
- Node:http://front.[PROJECTNAME].docker.localhost:8000
- Varnish:http://varnish.[PROJECTNAME].docker.localhost:8000
请注意,Solr、Node 和 Varnish 默认未启用。有关如何启用它们的说明,请参阅下面的自定义章节。
PHP 调试
默认情况下,PHP 配置了 XDebug 功能已启用,您应该查看您 IDE 的说明来了解如何开始调试会话。
查看日志
每个服务(nginx、php、db 等)都提供自己的日志,并且访问它们非常容易。
docker-compose logs -f [SERVICENAME]
每个服务都有自己的名称
- mailhog
- mariadb
- nginx
- node
- php
- pma
- redis
- solr
- varnish
配置对您网站的 SSH 访问
默认情况下,您不需要配置对网站的 SSH 访问。但是,如果您想从网站拉取数据库和/或文件,SSH 访问会非常有用,下一章关于 Drush 的内容将向您展示如何使用它。
对于配置访问,您需要做两件事
配置您的 Drush 别名
在您的服务器项目根目录下,您会找到一个名为 drush
的子目录,其中包含一个名为 aliases.drushrc.php
的文件,该文件包含一个 dev
和一个 live
别名。第一个别名是自动配置的,第二个别名默认为空。您需要手动提供详细信息
- root:远程主机上 Drupal 根目录的完整路径
- uri:网站的域名和可选的基本路径
- remote-host:远程主机的有效主机名或 IP 地址 - 如果您不确定,请使用上面 uri 中的域名
- remote-user:您可以通过 SSH 访问远程主机的用户名
可能还有更多选项,有关详细信息,请参阅 Drush 文档。
配置从 PHP 容器中的 SSH 访问
此功能仅在您的服务器上启用了 SSH 代理转发时才可用。如果您需要任何帮助,请参阅这个优秀的教程。
您的服务器 SSH 配置自动通过套接字转发到 PHP Docker 容器中,您不需要做任何事情来使其工作,只要您的服务器正确配置了通过 SSH 访问您的网站 - 在这种情况下,PHP 容器也可以这样做。这是通过将您的 SSH_AUTH_SOCK
环境变量挂载并转发到 PHP 容器中的 /ssh-agent
来实现的,以便容器内的用户可以利用与容器外构建它们的用户相同的 SSH 设置。
可能在此情况下引起麻烦的典型问题包括
- 权限:容器内的用户必须有权访问您的 SSH 认证套接字。确保这一点的最佳方式是在容器内以 root 用户运行服务。在开发环境中,这应该是没有问题的。
- SSH 密钥应添加到套接字:通常,在设置环境的过程中已经添加了 SSH 密钥,但如果还没有,请记住从主机调用
ssh-add /path/to/your/key
来添加您的密钥。
使用 Drush
此插件配置了 Drush 的多个设置、别名和 shell-别名,使您的开发生活变得更加轻松。您可以选择进入 PHP 容器并执行 Drush,或者您可以从主机调用每个 Drush 命令。当您使用 L3D 框架时,只需在您的 L3D 容器中调用 drush
即可,其余的都在后台自动完成。
# Entering PHP Container
docker-compose exec php sh
# Call Drush command
drush site-aliases
# ...or, call that command from your host:
docker-compose exec php drush site-aliases
更好的是,您可以为您的主机 shell 创建 shell 别名(见下文),这将使其更加容易。
drush site-aliases
如果您已经配置了对网站的 SSH 访问(见上文),则可以轻松地将数据库和/或文件从您的网站拉取到您的开发环境中。
# Pull the database
drush pull-sql
# Pull the files
drush pull-files
# Pull both
drush pull-all
进一步阅读
有关 Docker 环境可以执行的其他操作的最好描述可以在 Docker4Drupal 文档 中找到。
自定义
为了覆盖Docker环境的默认设置,请将此数组中的相关部分添加到您项目根目录下的.lakedrops.yml
文件中
docker4drupal:
projectname: [NAME OF CURRENT DIRECTORY]
ci_home: /home/gitlab-runner
docker0:
ip: [IP OF YOUR DOCKER HOST]
proxy: [IP OF TRAEFIK PROXY]
traefik:
domain: docker.localhost
usessl: 0
port: 8000
ports: 8443
cert: fullchain.pem
key: privkey.pem
live:
root: ''
uri: ''
host: ''
user: ''
drush:
sql:
tables:
structure:
- cache
- cache_*
- history
- search_*
- sessions
- watchdog
skip:
- migration_*
drupal:
version: 9
php:
version: '7.4'
xdebug: 1
webserver:
type: apache
varnish:
enable: 0
redis:
version: '6'
dbbrowser:
type: pma
solr:
enable: 0
version: '4.8.0'
node:
enable: 0
key: ''
path: ''
memcached:
enable: 0
rsyslog:
enable: 0
athenapdf:
enable: 0
key: ''
blackfire:
enable: 0
id: ''
token: ''
webgrind:
enable: 0
wkhtmltox:
enable: 0
更改这些值后,运行ahoy update
(或composer lakedrops:docker4drupal
),环境将重新配置。下次启动您的Docker环境时,将使用这些新值。
添加新的Docker服务或增强现有服务
您可以通过添加更多详细信息到.lakedrops.yml
配置来创建额外的Docker服务或增强现有服务
docker4drupal:
docker-compose.yml:
services:
php:
environment:
MY_VAR: value
mariadbd6:
image: wodby/mariadb:10.5
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: drupal
MYSQL_USER: drupal
MYSQL_PASSWORD: drupal
mycustomservice:
image: mydomain/myimage
这将向php容器添加另一个环境变量,定义一个名为mariadbd6
的第二个mariadb容器,可能用于例如从单独的数据库迁移,以及一个具有您自己的镜像和配置的自定义服务。
请记住,更改这些设置后,请使用ahoy update
更新docker compose,然后使用ahoy up
重新创建您的容器。
更多配置调整
自定义Apache配置
docker4drupal:
webserver:
overwriteconfig: 1
使用此设置,当加载时,Apache容器将包含位于项目根目录相对于./apache/vhost.conf
的文件。
将更多域名路由到您的Apache容器
docker4drupal:
extradomains:
- domain1.example.com
- domain2.example.com
技巧与窍门
有关localhost子域的一些说明
localhost
域名始终定义为解析为IP地址127.0.0.1,这正是我们需要与本地安装(如本例中)一起工作的。使用localhost的子域来告诉Docker和Traefik将请求路由到哪个容器,这使得此环境真正强大。因此,您可以使用http://project1.docker.localhost:8000
进行开发网站,使用http://pma.project1.docker.localhost:8000
进行该网站的PhpMyAdmin门户,该门户由不同容器中的不同服务提供。
关于此类子域是否合法存在一些争议,而Chrome/Google认为这是完全正常的,并符合定义此类内容的RFA。这意味着,所有这些在Chrome中都能正常工作。不幸的是,Firefox/Mozilla尚未实现此标准(尚不支持),因此在不修改本地hosts文件的情况下无法在该浏览器中使用。如果您想使用Firefox,请在主机上的/etc/hosts
文件中添加一行127.0.0.1 project1.docker.localhost pma.project1.docker.localhost ...
,其中包含您将要使用所有可能域名的空间限制列表。
并行运行多个网站
此插件配置Docker容器,以便可以并行启动任意数量的容器。由于每个容器都有各自的项目名称,这些名称将包含在域名中,因此您可以同时使用它们。为此,将创建并启动一个单独的Docker服务容器,该容器作为代理操作,将您的本地流量路由到始终正确的具有正确开发网站的Docker容器。
与wkhtmltox一起工作
当使用Drupal模块print
时,请转到admin/config/user-interface/print/pdf/wkhtmltopdf
并删除选项--footer-font-size 7 --footer-right '[page]'
,因为这些选项在未打补丁的QT版本中不起作用。
链接
有关更多详细信息,我们建议以下链接