Roundcube Docker镜像是Roundcube Webmail套件的容器化部署方案,提供基于Web的电子邮件客户端功能。该镜像封装了Roundcube Webmail的核心组件,支持通过环境变量快速配置,兼容多种数据库后端,并提供灵活的持久化和扩展能力,适用于个人或企业邮件系统的Web访问层部署。
apache(含Apache Web服务器)、fpm(FPM模式)和fpm-alpine(Alpine轻量版FPM)三种变体| 标签类型 | 描述 |
|---|---|
latest-* | 包含最新稳定版Roundcube及最新PHP基础镜像(如latest-apache) |
1.3.x | 特定主版本系列(如1.3系列),持续接收该系列更新和基础镜像升级 |
1.3.10 | 完整版本标签,仅表示发布时的版本和基础镜像,不接收后续更新 |
apache:基于php:*{-apache}镜像,内置Apache Web服务器,开箱即用fpm:基于php:*{-fpm}镜像,仅包含PHP-FPM,需配合外部Web服务器(如Nginx)fpm-alpine:基于Alpine Linux的FPM变体,镜像体积更小,资源占用更低| 环境变量 | 默认值 | 说明 |
|---|---|---|
ROUNDCUBEMAIL_DEFAULT_HOST | - | IMAP服务器主机名,加密连接前缀:tls://(STARTTLS)或ssl://(SSL/TLS) |
ROUNDCUBEMAIL_DEFAULT_PORT | 143 | IMAP服务器端口 |
ROUNDCUBEMAIL_SMTP_SERVER | - | SMTP服务器主机名,加密连接前缀同上 |
ROUNDCUBEMAIL_SMTP_PORT | 587 | SMTP服务器端口 |
ROUNDCUBEMAIL_USERNAME_DOMAIN | - | 自动添加到登录用户名的域名(如example.com,用户仅需输入user) |
ROUNDCUBEMAIL_REQUEST_PATH | / | 反向代理场景下的请求路径,详情见defaults.inc.php |
| 环境变量 | 默认值 | 说明 |
|---|---|---|
ROUNDCUBEMAIL_PLUGINS | archive,zipdownload | 启用的内置插件列表(逗号分隔) |
ROUNDCUBEMAIL_INSTALL_PLUGINS | - | 设置为1或true启用启动时插件安装 |
ROUNDCUBEMAIL_SKIN | elastic | 默认主题皮肤 |
ROUNDCUBEMAIL_UPLOAD_MAX_FILESIZE | 5M | 文件上传大小限制 |
ROUNDCUBEMAIL_SPELLCHECK_URI | - | Google XML拼写检查API的完整URL(如google-spell-pspell服务) |
ROUNDCUBEMAIL_ASPELL_DICTS | - | 要安装的aspell词典列表(逗号分隔,如de,fr,pl) |
| 环境变量 | 默认值 | 说明 |
|---|---|---|
ROUNDCUBEMAIL_DB_TYPE | sqlite | 数据库类型:mysql、pgsql或sqlite |
ROUNDCUBEMAIL_DB_HOST | mysql/postgres | 数据库主机名(默认值取决于数据库类型) |
ROUNDCUBEMAIL_DB_PORT | 3306/5432 | 数据库端口(默认值取决于数据库类型) |
ROUNDCUBEMAIL_DB_USER | root(MySQL) | 数据库用户名 |
ROUNDCUBEMAIL_DB_PASSWORD | - | 数据库密码 |
ROUNDCUBEMAIL_DB_NAME | roundcubemail | 数据库名称 |
默认使用容器内SQLite数据库(路径/var/roundcube/db),适用于测试环境。生产环境需通过卷挂载持久化数据:
shdocker run -v roundcube-db:/var/roundcube/db -d roundcube/roundcubemail
配置示例(MySQL):
shdocker run \ -e ROUNDCUBEMAIL_DB_TYPE=mysql \ -e ROUNDCUBEMAIL_DB_HOST=mysql-host \ -e ROUNDCUBEMAIL_DB_USER=roundcube \ -e ROUNDCUBEMAIL_DB_PASSWORD=secret \ -e ROUNDCUBEMAIL_DB_NAME=roundcube_db \ -d roundcube/roundcubemail
注意:启动前需确保数据库已存在,且用户具有表创建权限。
在Docker Swarm中,可通过Docker Secrets管理敏感信息,支持以下secrets:
| Secret名称 | 对应环境变量 | 用途 |
|---|---|---|
roundcube_des_key | - | 用于加密的唯一随机密钥 |
roundcube_db_user | ROUNDCUBEMAIL_DB_USER | 数据库用户名 |
roundcube_db_password | ROUNDCUBEMAIL_DB_PASSWORD | 数据库密码 |
roundcube_oauth_client_secret | ROUNDCUBEMAIL_OAUTH_CLIENT_SECRET | OAuth客户端密钥 |
使用示例:
yamlversion: '3.8' secrets: db_password: file: ./db_password.txt services: roundcube: image: roundcube/roundcubemail secrets: - source: db_password target: roundcube_db_password
通过挂载目录到/var/roundcube/config,添加*.php文件实现配置覆盖(支持PHP语法):
shdocker run -v ./custom-config:/var/roundcube/config -d roundcube/roundcubemail
配置参考:Roundcube配置选项
挂载PHP配置文件到/usr/local/etc/php/conf.d/zzz_roundcube-custom.ini自定义PHP设置:
ini# custom-php.ini memory_limit = 128M upload_max_filesize = 10M
启动命令:
shdocker run -v ./custom-php.ini:/usr/local/etc/php/conf.d/zzz_roundcube-custom.ini -d roundcube/roundcubemail
以下目录需通过卷挂载实现数据持久化或多实例共享:
| 路径 | 用途描述 |
|---|---|
/var/roundcube/db | SQLite数据库存储目录(仅SQLite模式需要) |
/var/www/html | Roundcube安装根目录(含插件、皮肤等),FPM变体需与Web服务器共享此目录 |
/var/roundcube/config | 自定义配置文件目录(挂载后持久化配置) |
/tmp/roundcube-temp | 临时文件目录(上传附件、缩略图等),多实例部署时需共享此目录 |
挂载示例(多目录持久化):
shdocker run \ -v roundcube-config:/var/roundcube/config \ -v roundcube-temp:/tmp/roundcube-temp \ -v roundcube-html:/var/www/html \ -d roundcube/roundcubemail
通过环境变量启用插件安装:
shdocker run -e ROUNDCUBEMAIL_INSTALL_PLUGINS=1 -d roundcube/roundcubemail
插件安装逻辑在容器启动时执行,需确保网络通畅。
shdocker run \ -e ROUNDCUBEMAIL_DEFAULT_HOST=imap.example.com \ -e ROUNDCUBEMAIL_SMTP_SERVER=smtp.example.com \ -p 8000:80 \ -d roundcube/roundcubemail
imap.example.com和smtp.example.com替换为实际IMAP/SMTP服务器地址http://localhost:8000打开Roundcube界面yamlversion: '3.8' services: roundcube: image: roundcube/roundcub***latest-apache ports: - "80:80" environment: - ROUNDCUBEMAIL_DEFAULT_HOST=imap.example.com - ROUNDCUBEMAIL_SMTP_SERVER=smtp.example.com - ROUNDCUBEMAIL_DB_TYPE=mysql - ROUNDCUBEMAIL_DB_HOST=mysql - ROUNDCUBEMAIL_DB_USER=roundcube - ROUNDCUBEMAIL_DB_PASSWORD=roundcube-pass - ROUNDCUBEMAIL_DB_NAME=roundcube volumes: - roundcube-temp:/tmp/roundcube-temp - roundcube-config:/var/roundcube/config depends_on: - mysql mysql: image: mysql:8.0 environment: - MYSQL_ROOT_PASSWORD=root-pass - MYSQL_DATABASE=roundcube - MYSQL_USER=roundcube - MYSQL_PASSWORD=roundcube-pass volumes: - mysql-data:/var/lib/mysql volumes: mysql-data: roundcube-temp: roundcube-config:
基于***镜像扩展(例如添加Git和Composer):
dockerfileFROM roundcube/roundcub***latest ENV COMPOSER_ALLOW_SUPERUSER=1 RUN set -ex; \ apt-get update; \ apt-get install -y --no-install-recommends \ git \ composer \ ; \ rm -rf /var/lib/apt/lists/*
构建命令:
shdocker build -t custom-roundcube .
更多完整部署示例(如Nginx+FPM、PostgreSQL集成等)可参考***仓库:
Roundcube Docker示例
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 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