i386/drupalDrupal 是一个免费开源的内容管理框架,使用 PHP 编写并基于 GNU 通用公共许可证分发。它被用作后端框架,支持全球至少 2.1% 的网站,涵盖个人博客、企业网站、和网站(如 ***.gov 和 ***),也用于知识管理和业务协作。
本镜像是 官方 Drupal 镜像 的 i386 架构版本,提供了在 i386 平台上运行 Drupal 的容器化解决方案,简化部署和管理流程。
直接运行容器(默认使用 SQLite 数据库,适合快速测试):
bashdocker run --name some-drupal -d i386/drupal
将容器内 80 端口映射到主机 8080 端口,通过 http://localhost:8080 访问:
bashdocker run --name some-drupal -p 8080:80 -d i386/drupal
Drupal 支持多种数据库,以下为常用数据库的配置步骤。
bashdocker network create some-network # 创建网络(若未创建) 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=rootpass \ # root 密码 mysql:5.7
bashdocker run --name some-drupal --network some-network -p 8080:80 -d i386/drupal
drupal/user/password(与 MySQL 容器环境变量对应)some-mysql(同一网络内容器可通过容器名访问)bashdocker network create some-network # 若未创建网络 docker run -d --name some-postgres --network some-network \ -e POSTGRES_DB=drupal \ # 数据库名 -e POSTGRES_USER=user \ # 数据库用户 -e POSTGRES_PASSWORD=password \ # 用户密码 postgres:11
bashdocker run --name some-drupal --network some-network -p 8080:80 -d i386/drupal
drupal/user/password(与 PostgreSQL 容器环境变量对应)some-postgresDrupal 的模块、主题、配置等文件需持久化存储,推荐使用 Docker 卷或绑定挂载。
bash# 创建本地目录 mkdir -p /path/on/host/{modules,profiles,sites,themes} # 复制容器内 sites 目录内容到本地(其他目录默认为空,可直接挂载) docker run --rm i386/drupal tar -cC /var/www/html/sites . | tar -xC /path/on/host/sites
bashdocker 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 \ -p 8080:80 \ i386/drupal
bash# 创建卷 docker volume create drupal-modules docker volume create drupal-profiles docker volume create drupal-sites docker volume create drupal-themes # 初始化 sites 卷(复制容器内默认内容) docker run --rm -v drupal-sites:/temporary/sites i386/drupal cp -aRT /var/www/html/sites /temporary/sites
bashdocker 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 \ -p 8080:80 \ i386/drupal
以下是结合 PostgreSQL 数据库的 compose.yaml 示例:
yaml# Drupal + PostgreSQL 部署示例 # 访问地址:http://localhost:8080 # 初始化时数据库配置:类型=PostgreSQL,数据库名=postgres,用户名=postgres,密码=example,主机名=postgres services: drupal: image: i386/drupal:10-apache # 使用 i386 架构的 Drupal 镜像 ports: - "8080:80" # 端口映射 volumes: - drupal-modules:/var/www/html/modules - drupal-profiles:/var/www/html/profiles - drupal-sites:/var/www/html/sites # 自动初始化卷内容 - drupal-themes:/var/www/html/themes restart: always # 自动重启 postgres: image: postgres:16 # PostgreSQL 数据库 environment: POSTGRES_PASSWORD: example # 数据库密码 restart: always # 自动重启 volumes: drupal-modules: drupal-profiles: drupal-sites: drupal-themes:
启动命令:
bashdocker compose up -d
本镜像不包含额外 PHP 扩展,若需添加(如 gd、mysqli 等),需基于本镜像构建自定义镜像。参考 php 镜像文档,示例 Dockerfile:
dockerfileFROM i386/drupal:10-apache # 安装 gd 扩展及依赖 RUN apt-get update && apt-get install -y \ libfreetype6-dev \ libjpeg62-turbo-dev \ libpng-dev \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install -j$(nproc) gd
参考 php 镜像文档的“以任意用户运行”部分,通过调整文件权限或使用 --user 参数运行非 root 用户容器。
i386/drupal:<version>默认镜像,基于 Apache 服务器,适合大多数场景。标签中的 bookworm、trixie 等为 Debian 发行版代号,指定基础系统版本,建议生产环境显式指定以避免依赖变更。
i386/drupal:<version>-fpm包含 PHP-FPM(FastCGI 进程管理器),需配合反向代理(如 Nginx、Apache)使用。注意:PHP-FPM 协议不加密,仅用于私有容器网络,避免直接暴露端口。
| 数据库类型 | 环境变量 | 说明 |
|---|---|---|
| MySQL | MYSQL_DATABASE | 数据库名称 |
| MySQL | MYSQL_USER | 数据库用户 |
| MySQL | MYSQL_PASSWORD | 用户密码 |
| MySQL | MYSQL_ROOT_PASSWORD | root 用户密码(可选) |
| PostgreSQL | POSTGRES_DB | 数据库名称 |
| PostgreSQL | POSTGRES_USER | 数据库用户 |
| PostgreSQL | POSTGRES_PASSWORD | 用户密码 |
完整标签列表请参考 官方文档。
Drupal 软件遵循 GNU 通用公共许可证。镜像中包含的其他软件(如 Debian 基础系统组件)可能遵循不同许可证,详细信息见 repo-info 仓库。使用前请确保符合所有软件的许可证要求。

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