
roundcube/roundcubemailRoundcube 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示例


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