arm32v5/drupal本仓库是官方drupal镜像的arm32v5架构专用仓库。更多信息请参见官方镜像文档中的“非amd64架构?”和官方镜像FAQ中的“镜像源在Git中已更改,该怎么办?”。
维护者:
Docker社区(非Drupal社区或Drupal安全团队)
获取帮助:
Docker社区Slack、Server Fault、Unix & Linux或Stack Overflow
Dockerfile链接警告:此镜像在arm32v5架构上不受支持
问题提交地址:
[***]
支持的架构:(更多信息)
amd64、arm32v6、arm32v7、arm64v8、i386、ppc64le、riscv64、s390x
镜像 artifact 详情:
repo-info仓库的repos/drupal/目录(历史记录)
(镜像元数据、传输大小等)
镜像更新:
official-images仓库的library/drupal标签
official-images仓库的library/drupal文件(历史记录)
本描述的来源:
docs仓库的drupal/目录(历史记录)
Drupal是一个免费开源的内容管理框架,用PHP编写,基于GNU通用公共许可证分发。它被用作至少2.1%的全球网站的后端框架,从小型个人博客到企业、和网站,包括***.gov和***。它也用于知识管理和业务协作。
***.org/wiki/Drupal
!logo
启动drupal实例的基本命令模式:
console$ docker run --name some-drupal -d arm32v5/drupal
如果希望从主机访问实例而无需使用容器IP,可以使用标准端口映射:
console$ docker run --name some-drupal -p 8080:80 -d arm32v5/drupal
然后通过浏览器访问http://localhost:8080或[***]。
此镜像支持多种数据库类型,最容易通过Docker网络使用。在默认配置中,可以使用SQLite来避免第二个容器并写入平面文件。以下是不同(更适合生产环境)数据库类型的详细说明。
首次访问此镜像提供的Web服务器时,会进行简短的设置过程。以下详细信息专门针对该配置过程中的“设置数据库”步骤。
要将Drupal与MySQL数据库一起使用,需要运行MySQL容器,并使用MYSQL_DATABASE、MYSQL_USER、MYSQL_PASSWORD和MYSQL_ROOT_PASSWORD环境变量进行配置:
console$ docker run -d --name some-mysql --network some-network \ -e MYSQL_DATABASE=drupal \ -e MYSQL_USER=user \ -e MYSQL_PASSWORD=password \ -e MYSQL_ROOT_PASSWORD=password \ mysql:5.7
在Drupal的Web安装向导的“设置数据库”步骤中,输入您提供的环境变量值:
<访问MySQL实例的详细信息>(MYSQL_USER、MYSQL_PASSWORD、MYSQL_DATABASE;参见mysql描述中的环境变量)some-mysql(同一docker-network上的容器可通过容器名称路由)要将Drupal与PostgreSQL数据库一起使用,需要运行Postgres容器,并使用POSTGRES_DB、POSTGRES_USER和POSTGRES_PASSWORD环境变量进行配置:
console$ docker run -d --name some-postgres --network some-network \ -e POSTGRES_DB=drupal \ -e POSTGRES_USER=user \ -e POSTGRES_PASSWORD=pass \ postgres:11
在Drupal的Web安装向导的“设置数据库”步骤中,输入您提供的环境变量值:
PostgreSQL<访问PostgreSQL实例的详细信息>(POSTGRES_USER、POSTGRES_PASSWORD、POSTGRES_DB;参见postgres描述中的环境变量)some-postgres(同一docker-network上的容器可通过容器名称路由)默认情况下,此镜像不包含任何卷。关于此主题的详细讨论请参见docker-library/drupal#3,强烈建议阅读。
共识是/var/www/html/modules、/var/www/html/profiles和/var/www/html/themes通常应作为卷(未来此镜像可能会明确声明VOLUME),但/var/www/html/sites目录的处理较为复杂,因为该目录的内容需要使用镜像中的内容初始化。
如果使用bind-mounts,一种预填充本地sites目录的方法如下:
console$ docker run --rm arm32v5/drupal tar -cC /var/www/html/sites . | tar -xC /path/on/host/sites
然后可以将其bind-mount到新容器中:
console$ docker run --name some-drupal --network some-network -d \ -v /path/on/host/modules:/var/www/html/modules \ -v /path/on/host/profiles:/var/www/html/profiles \ -v /path/on/host/sites:/var/www/html/sites \ -v /path/on/host/themes:/var/www/html/themes \ arm32v5/drupal
使用Docker卷的另一种解决方案:
console$ docker volume create drupal-sites $ docker run --rm -v drupal-sites:/temporary/sites arm32v5/drupal cp -aRT /var/www/html/sites /temporary/sites $ docker run --name some-drupal --network some-network -d \ -v drupal-modules:/var/www/html/modules \ -v drupal-profiles:/var/www/html/profiles \ -v drupal-sites:/var/www/html/sites \ -v drupal-themes:/var/www/html/themes \ arm32v5/drupal
docker composedrupal的compose.yaml示例:
yaml# Drupal与PostgreSQL # # 通过"http://localhost:8080"访问 # # 在Drupal初始设置期间, # 数据库类型:PostgreSQL # 数据库名称:postgres # 数据库用户名:postgres # 数据库密码:example # 高级选项;数据库主机:postgres services: drupal: image: drupal:10-apache ports: - 8080:80 volumes: - /var/www/html/modules - /var/www/html/profiles - /var/www/html/themes # 利用Docker的特性:新的***卷会使用镜像中相同位置的现有内容初始化 - /var/www/html/sites restart: always postgres: image: postgres:16 environment: POSTGRES_PASSWORD: example restart: always
运行docker compose up,等待初始化完成后,访问http://localhost:8080或[***](视情况而定)。安装期间选择postgres作为数据库,参数如下:数据库名称=postgres,用户名=postgres,密码=example,主机名=postgres。
此镜像不提供任何额外的PHP扩展或其他库,即使它们是流行插件所必需的。可能的插件数量无限,它们可能需要PHP支持的任何扩展。包含所有PHP扩展会显著增加镜像大小。
如果需要额外的PHP扩展,需要基于此镜像创建自己的镜像。php镜像的文档解释了如何编译额外的扩展。此外,drupal:7 Dockerfile提供了相关示例。
以下Docker Hub功能可帮助保持依赖镜像的更新:
参见php镜像文档的“以任意用户运行”部分。
查看此镜像中包含的软件的许可证信息。
与所有Docker镜像一样,这些镜像可能还包含其他软件,可能受其他许可证约束(如基础发行版中的Bash等,以及主要软件的任何直接或间接依赖项)。
一些能够自动检测到的额外许可证信息可能位于repo-info仓库的drupal/目录中。
对于任何预构建镜像的使用,镜像用户有责任确保对本镜像的任何使用符合其中包含的所有软件的相关许可证。

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务