注意: 这是 s390x 架构的 drupal 官方镜像的"每架构"仓库 — 有关更多信息,请参阅官方镜像文档中的 https://github.com/docker-library/official-images#architectures-other-than-amd64 和官方镜像 FAQ 中的 https://github.com/docker-library/faq#an-images-source-changed-in-git-now-what%E3%80%82
Drupal 是一个开源内容管理平台,为数百万网站和应用程序提供支持。它是一个用 PHP 编写的免费开源内容管理框架,根据 GNU 通用公共许可证分发。全球至少 2.1% 的网站使用它作为后端框架,从个人博客到企业、和网站,包括 ***.gov 和 ***。它还用于知识管理和业务协作。
!https://raw.githubusercontent.com/docker-library/docs/e405066455691ca2429eb8094777f12d2dad8f91/drupal/logo.svg?sanitize=true
维护者: https://github.com/docker-library/drupal%EF%BC%88*%E4%B8%8D%E6%98%AF* Drupal 社区或 Drupal 安全团队)
获取帮助: Docker 社区 Slack、Server Fault、Unix & Linux 或 Stack Overflow
提交问题: https://github.com/docker-library/drupal/issues?q=
支持的架构: (https://github.com/docker-library/official-images#architectures-other-than-amd64)
https://hub.docker.com/r/amd64/drupal/%E3%80%81https://hub.docker.com/r/arm32v6/drupal/%E3%80%81https://hub.docker.com/r/arm32v7/drupal/%E3%80%81https://hub.docker.com/r/arm64v8/drupal/%E3%80%81https://hub.docker.com/r/i386/drupal/%E3%80%81https://hub.docker.com/r/ppc64le/drupal/%E3%80%81https://hub.docker.com/r/riscv64/drupal/%E3%80%81https://hub.docker.com/r/s390x/drupal/
已发布镜像工件详情: https://github.com/docker-library/repo-info/blob/master/repos/drupal (https://github.com/docker-library/repo-info/commits/master/repos/drupal)%EF%BC%88%E9%95%9C%E5%83%8F%E5%85%83%E6%95%B0%E6%8D%AE%E3%80%81%E4%BC%A0%E8%BE%93%E5%A4%A7%E5%B0%8F%E7%AD%89%EF%BC%89
镜像更新: https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fdrupal 和 https://github.com/docker-library/official-images/blob/master/library/drupal (https://github.com/docker-library/official-images/commits/master/library/drupal)
注意: 此镜像的描述超出了 Hub 的 25000 字符长度限制,因此"支持的标签"列表已被删减以适应。另请参阅 https://github.com/docker/hub-feedback/issues/238 和 https://github.com/docker/roadmap/issues/475%E3%80%82
启动 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 或 http://host-ip:8080。
此镜像支持多种数据库类型,最容易通过 Docker 网络使用。在默认配置中,可以使用 SQLite 来避免使用第二个容器并写入平面文件。以下是不同(更适合生产环境)数据库类型的详细说明。
首次访问此镜像提供的 Web 服务器时,它将进行简短的设置过程。下面提供的详细信息专门针对该配置过程中的"设置数据库"步骤。
MySQL
要将 Drupal 与 MySQL 数据库一起使用,需要运行 https://hub.docker.com/_/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;参见 https://hub.docker.com/_/mysql/ 描述中的环境变量)some-mysql(同一 docker-network 上的容器可通过其容器名称路由)PostgreSQL
要将 Drupal 与 PostgreSQL 数据库一起使用,需要运行 https://hub.docker.com/_/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;参见 https://hub.docker.com/_/postgres/ 描述中的环境变量)some-postgres(同一 docker-network 上的容器可通过其容器名称路由)默认情况下,此镜像不包含任何卷。在 https://github.com/docker-library/drupal/issues/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 或 http://host-ip:8080(视情况而定)。安装时选择 postgres 作为数据库,参数如下:dbname=postgres user=postgres pass=example hostname=postgres
此镜像不提供任何额外的 PHP 扩展或其他库,即使它们是流行插件所必需的。可能的插件数量无穷无尽,它们可能需要 PHP 支持的任何扩展。包含所有存在的 PHP 扩展将大大增加镜像大小。
如果需要额外的 PHP 扩展,需要创建自己的镜像 FROM 此镜像。https://github.com/docker-library/docs/blob/master/php/README.md#how-to-install-more-php-extensions 解释了如何编译其他扩展。此外,https://github.com/docker-library/drupal/blob/bee08efba505b740a14d68254d6e51af7ab2f3ea/7/Dockerfile#L6-9 有一个这样做的例子。
Docker Hub 的以下功能可以帮助保持依赖镜像的最新状态:
参见 php 镜像文档的 https://hub.docker.com/_/php/%E3%80%82
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 等,以及主软件包含的任何直接或间接依赖项)。
一些能够自动检测到的其他许可证信息可能会在 https://github.com/docker-library/repo-info/tree/master/repos/drupal 中找到。
至于任何预构建镜像的使用,镜像用户有责任确保对该镜像的任何使用都符合其中包含的所有软件的相关许可证。
以下是 s390x/drupal 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务