注意: 这是 s390x 架构的 drupal 镜像的"每架构"仓库 — 有关更多信息,请参阅镜像文档中的 "除 amd64 之外的架构?" 和***镜像 FAQ 中的 "Git 中的镜像源已更改,现在该怎么办?"。
Drupal 是一个开源内容管理平台,为数百万网站和应用程序提供支持。它是一个用 PHP 编写的免费开源内容管理框架,根据 GNU 通用公共许可证分发。全球至少 2.1% 的网站使用它作为后端框架,从个人博客到企业、和网站,包括 ***.gov 和 ***。它还用于知识管理和业务协作。
!logo
维护者: Docker 社区(不是 Drupal 社区或 Drupal 安全团队)
获取帮助: Docker 社区 Slack、Server Fault、Unix & Linux 或 Stack Overflow
提交问题: [***]
支持的架构: (更多信息)
amd64、arm32v6、arm32v7、arm64v8、i386、ppc64le、riscv64、s390x
已发布镜像工件详情: repo-info 仓库的 repos/drupal/ 目录 (历史)(镜像元数据、传输大小等)
镜像更新: official-images 仓库的 library/drupal 标签 和 official-images 仓库的 library/drupal 文件 (历史)
注意: 此镜像的描述超出了 Hub 的 25000 字符长度限制,因此"支持的标签"列表已被删减以适应。另请参阅 docker/hub-feedback#238 和 docker/roadmap#475。
启动 drupal 实例的基本命令模式:
console$ docker run --name some-drupal -d s390x/drupal
如果希望从主机访问实例而无需使用容器的 IP,可以使用标准端口映射:
console$ docker run --name some-drupal -p 8080:80 -d s390x/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
在 Web 安装向导的 Drupal"设置数据库"步骤中,输入为环境变量提供的值:
<访问 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
在 Web 安装向导的 Drupal"设置数据库"步骤中,输入为环境变量提供的值:
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 的处理稍微复杂一些,因为该目录的内容确实需要使用镜像中的内容进行初始化。
如果使用绑定挂载,一种预播种本地 sites 目录的方法如下:
console$ docker run --rm s390x/drupal tar -cC /var/www/html/sites . | tar -xC /path/on/host/sites
然后可以将其绑定挂载到新容器中:
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 \ s390x/drupal
使用 Docker 卷的另一种解决方案:
console$ docker volume create drupal-sites $ docker run --rm -v drupal-sites:/temporary/sites s390x/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 \ s390x/drupal
drupal 的 compose.yaml 示例:
yaml# Drupal with PostgreSQL # # 通过 "http://localhost:8080" 访问 # # 在 Drupal 初始设置期间, # 数据库类型: PostgreSQL # 数据库名称: postgres # 数据库用户名: postgres # 数据库密码: example # 高级选项;数据库主机: postgres services: drupal: image: s390x/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 作为数据库,参数如下:dbname=postgres user=postgres pass=example hostname=postgres
此镜像不提供任何额外的 PHP 扩展或其他库,即使它们是流行插件所必需的。可能的插件数量无穷无尽,它们可能需要 PHP 支持的任何扩展。包含所有存在的 PHP 扩展将大大增加镜像大小。
如果需要额外的 PHP 扩展,需要创建自己的镜像 FROM 此镜像。php 镜像的文档 解释了如何编译其他扩展。此外,drupal:7 Dockerfile 有一个这样做的例子。
Docker Hub 的以下功能可以帮助保持依赖镜像的最新状态:
参见 php 镜像文档的 "以任意用户身份运行" 部分。
s390x/drupal 镜像有多种版本,每种版本都设计用于特定用例。
s390x/drupal:<version>这是默认镜像。如果不确定自己的需求,可能需要使用这个版本。它设计为既可作为一次性容器使用(挂载源代码并启动容器以启动应用程序),也可作为构建其他镜像的基础。
其中一些标签可能包含像 bookworm 或 trixie 这样的名称。这些是 Debian 发行版的代号,表示镜像所基于的发行版。如果镜像需要安装除镜像随附的软件包之外的任何其他软件包,可能需要显式指定其中之一,以最大程度地减少 Debian 有新版本时的中断。
s390x/drupal:<version>-fpm此变体包含 PHP 的 FastCGI 进程管理器 (FPM),这是 PHP 推荐的 FastCGI 实现。
为了使用此镜像变体,需要某种反向代理(如 NGINX、Apache 或其他支持 FastCGI 协议的工具)。
一些可能有用的资源:
警告: FastCGI 协议本质上是可信的,因此在私有容器网络之外公开是极其不安全的 — 除非确切知道自己在做什么(并且愿意接受极端风险),否则不要将 Docker 的 --publish (-p) 标志与此镜像变体一起使用。
查看此镜像中包含的软件的 许可证信息。
与所有 Docker 镜像一样,这些镜像可能还包含其他软件,这些软件可能在其他许可证下(例如来自基础发行版的 Bash 等,以及主软件包含的任何直接或间接依赖项)。
一些能够自动检测到的其他许可证信息可能会在 repo-info 仓库的 drupal/ 目录 中找到。
至于任何预构建镜像的使用,镜像用户有责任确保对该镜像的任何使用都符合其中包含的所有软件的相关许可证。

来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429