本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
一个安装并运行最新稳定版Moodle的Docker镜像,支持外部MySQL、MariaDB或PostgreSQL数据库,具备自动安装功能并包含默认预定义管理员用户。所有镜像均可通过Docker Hub获取。
使用本仓库构建所需镜像较为繁琐,完整流程在CONTRIBUTING.md文件中有详细描述。
所有可用镜像列表见:[***]
每种镜像变体按数据库支持、版本以及基于Apache还是Alpine FPM进行区分。具体如下:
| 镜像命名模式 | PHP执行类型 | MySQL支持 | MariaDB支持 | PostgreSQL支持 |
|---|---|---|---|---|
mulitbase_apache_^VERSION^ | apache | 是 | 是 | 是 |
mysql_maria_apache_^VERSION^ | apache | 是 | 是 | 否 |
postgresql_apache_^VERSION^ | apache | 否 | 否 | 是 |
mulitbase_alpine_fpm_^VERSION^ | fpm(运行于Alpine Linux) | 是 | 是 | 是 |
mysql_maria_alpine_fpm_^VERSION^ | fpm(运行于Alpine Linux) | 是 | 是 | 否 |
postgresql_alpine_fpm_^VERSION^ | fpm(运行于Alpine Linux) | 否 | 否 | 是 |
mulitbase_fpm_^VERSION^ | fpm | 是 | 是 | 是 |
mysql_maria_fpm_^VERSION^ | fpm | 是 | 是 | 否 |
postgresql_fpm_^VERSION^ | fpm | 否 | 否 | 是 |
^VERSION^为2-3位数字,第一位对应主版本号,其余对应次版本号。例如,mulitbase_apache_39运行Moodle 3.9,mulitbase_apache_310运行Moodle 3.10。
针对最新Moodle版本,还提供以下镜像:
| 镜像 | PHP执行类型 | MySQL支持 | MariaDB支持 | PostgreSQL支持 |
|---|---|---|---|---|
latest | apache | 是 | 是 | 是 |
mulitbase_apache_latest | apache | 是 | 是 | 是 |
mysql_maria_apache_latest | apache | 是 | 是 | 否 |
postgresql_apache_latest | apache | 否 | 否 | 是 |
mulitbase_alpine_fpm_latest | fpm(运行于Alpine Linux) | 是 | 是 | 是 |
mysql_maria_alpine_fpm_latest | fpm(运行于Alpine Linux) | 是 | 是 | 否 |
postgresql_alpine_fpm_latest | fpm(运行于Alpine Linux) | 否 | 否 | 是 |
mulitbase_fpm_latest | fpm | 是 | 是 | 是 |
mysql_maria_fpm_latest | fpm | 是 | 是 | 否 |
postgresql_fpm_latest | fpm | 否 | 否 | 是 |
针对最新Moodle LTS版本,提供以下镜像:
| 镜像 | PHP执行类型 | MySQL支持 | MariaDB支持 | PostgreSQL支持 |
|---|---|---|---|---|
mulitbase_apache_lts | apache | 是 | 是 | 是 |
mysql_maria_apache_lts | apache | 是 | 是 | 否 |
postgresql_apache_lts | apache | 否 | 否 | 是 |
mulitbase_alpine_fpm_lts | fpm(运行于Alpine Linux) | 是 | 是 | 是 |
mysql_maria_alpine_fpm_lts | fpm(运行于Alpine Linux) | 是 | 是 | 否 |
postgresql_alpine_fpm_lts | fpm(运行于Alpine Linux) | 否 | 否 | 是 |
mulitbase_fpm_lts | fpm | 是 | 是 | 是 |
mysql_maria_fpm_lts | fpm | 是 | 是 | 否 |
postgresql_fpm_lts | fpm | 否 | 否 | 是 |
所有镜像均搭载PHP 7.4。
默认PHP版本为7.4,同时为Moodle 3.11、4.0和4.11版本提供PHP 8.0镜像:
| 镜像命名模式 | PHP执行类型 | MySQL支持 | MariaDB支持 | PostgreSQL支持 |
|---|---|---|---|---|
mulitbase_apache_php8.0_^VERSION^ | apache | 是 | 是 | 是 |
mysql_maria_apache_php8.0_^VERSION^ | apache | 是 | 是 | 否 |
postgresql_apache_php8.0_^VERSION^ | apache | 否 | 否 | 是 |
mulitbase_alpine_fpm_php8.0_^VERSION^ | fpm(运行于Alpine Linux) | 是 | 是 | 是 |
mysql_maria_alpine_fpm_php8.0_^VERSION^ | fpm(运行于Alpine Linux) | 是 | 是 | 否 |
postgresql_alpine_fpm_php8.0_^VERSION^ | fpm(运行于Alpine Linux) | 否 | 否 | 是 |
mulitbase_fpm_php8.0_^VERSION^ | fpm | 是 | 是 | 是 |
mysql_maria_fpm_php8.0_^VERSION^ | fpm | 是 | 是 | 否 |
postgresql_fpm_php8.0_^VERSION^ | fpm | 否 | 否 | 是 |
PHP 7.4镜像命名模式如下:
| 镜像命名模式 | PHP执行类型 | MySQL支持 | MariaDB支持 | PostgreSQL支持 |
|---|---|---|---|---|
mulitbase_apache_php7.4_^VERSION^ | apache | 是 | 是 | 是 |
mysql_maria_apache_php7.4_^VERSION^ | apache | 是 | 是 | 否 |
postgresql_apache_php7.4_^VERSION^ | apache | 否 | 否 | 是 |
mulitbase_alpine_fpm_php7.4_^VERSION^ | fpm(运行于Alpine Linux) | 是 | 是 | 是 |
mysql_maria_alpine_fpm_php7.4_^VERSION^ | fpm(运行于Alpine Linux) | 是 | 是 | 否 |
postgresql_alpine_fpm_php7.4_^VERSION^ | fpm(运行于Alpine Linux) | 否 | 否 | 是 |
mulitbase_fpm_php7.4_^VERSION^ | fpm | 是 | 是 | 是 |
mysql_maria_fpm_php7.4_^VERSION^ | fpm | 是 | 是 | 否 |
postgresql_fpm_php7.4_^VERSION^ | fpm | 否 | 否 | 是 |
镜像支持以下数据库版本:
Postgresql: 11或更早Mysql: 5.7Mariadb: 10.2我们旨在每周提供更新的镜像。每个构建镜像均以_YmdHi格式标记构建日期,无构建日期的为最新构建。例如,mysql_maria_apache_latest是最新构建镜像,mysql_maria_apache_latest_202108112012是2021-08-11 20:12构建的镜像。可在Docker Hub的标签部分查看最新或旧版本构建。
我们还开发了docker-compose解决方案,强烈建议使用该方案。
此外,若上述方案不符合需求,强烈建议创建docker-compose.yml并使用docker-compose运行。
创建Moodle新实例:
... 使用MySQL:
docker run -d --name DB -e MYSQL_DATABASE=moodle -e MYSQL_RANDOM_ROOT_PASSWORD=yes -e MYSQL_ONETIME_PASSWORD=yes -e MYSQL_USER=^数据库用户名^ -e MYSQL_PASSWORD=^数据库密码^ mysql:5.7 docker run -d -P --name moodle --link DB:DB -e MOODLE_DB_HOST=DB -e MOODLE_URL=[***] -p 8080:80 ellakcy/moodle:mysql_maria_apache_^VERSION^
注意 目前由于MySQL用户认证方式,仅支持5.7及更早版本的MySQL。
... 使用MariaDB:
docker run -d --name DB -e MYSQL_DATABASE=^数据库名^ -e MYSQL_RANDOM_ROOT_PASSWORD=yes -e MYSQL_ONETIME_PASSWORD=yes -e MYSQL_USER=^数据库用户名^ -e MYSQL_PASSWORD=^数据库密码^ mariadb:10.2 docker run -d -P --name moodle --link DB:DB -e MOODLE_DB_HOST=DB -e MOODLE_URL=[***] -e MOODLE_DB_TYPE="mariadb" -p 8080:80 ellakcy/moodle:mysql_maria_apache_^VERSION^
注意 基于与MySQL相同的原因,请使用10.2及更早版本的MariaDB。
... 使用PostgreSQL:
docker run --name=DB -e POSTGRES_USER=^数据库用户名^ -e POSTGRES_PASSWORD=^数据库密码^ -e POSTGRES_DB=^数据库名^ -d postgres docker run -d -P --name moodle --link DB:DB -e MOODLE_DB_HOST=DB -e MOODLE_URL=[***] -e MOODLE_DB_TYPE="pgsql" -p 8080:80 ellakcy/moodle:postgresql_apache_^VERSION^
之后可在浏览器中访问以下URL开始使用:
[***]
注意:如需持久化数据,请在数据库和Moodle容器中均使用卷。 注意2:
^VERSION表示Moodle版本。最新LTS版本使用lts,最新非LTS版本使用latest。
FPM解决方案建议使用docker-compose。生产环境推荐使用仓库[***]
可使用以下额外环境变量(通过docker run命令的-e选项):
安装过程中会生成默认用户。请在安装时提供不同的凭据。
| 变量名 | 默认值 | 描述 |
|---|---|---|
MOODLE_URL | [***] | 网站访问URL |
MOODLE_ADMIN | admin | 默认管理员用户名 |
MOODLE_ADMIN_PASSWORD | Admin~1234 | 默认管理员密码 - 生产环境请修改 |
MOODLE_ADMIN_EMAIL | *** | 默认管理员*** |
| 变量名 | 默认值 | 描述 |
|---|---|---|
MOODLE_DB_HOST | 数据库访问URL | |
MOODLE_DB_PASSWORD | 数据库密码 | |
MOODLE_DB_USER | 数据库用户名 | |
MOODLE_DB_NAME | 数据库名 | |
MOODLE_DB_PORT | 数据库访问端口 |
| 变量名 | 默认值 | 描述 |
|---|---|---|
MOODLE_EMAIL_TYPE_QMAIL | false | 是否使用qmail作为邮件传输代理(MTA) |
MOODLE_EMAIL_HOST | SMTP服务器主机。未提供则不发送邮件 |
| 变量名 | 默认值 | 描述 |
|---|---|---|
MOODLE_REVERSE_LB | false | Moodle是否运行在负载均衡器后 |
MOODLE_SSL | false | Moodle是否运行在启用SSL的负载均衡器后 |
可使用以下卷:
如需使用Nginx作为反向HTTP代理,建议使用以下配置:
server { listen 449 ssl; server_name ^你的域名^; ssl_certificate ^证书路径^; ssl_certificate_key ^密钥路径^; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; location / { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_cache_bypass $http_upgrade; # 如需其他端口,请替换以下值 proxy_pass http://^本地URL和端口^; } }
其中:
^你的域名^:Moodle可用的域名,需与MOODLE_URL环境变量的值相同。^本地URL和端口^:反向代理转发请求的URL。^证书路径^、^密钥路径^:证书及其密钥的路径。如上述配置所示,根据此问题,反向代理不提供HTTP Host头。
同时需将Docker环境变量MOODLE_REVERSE_LB和MOODLE_SSL设置为true。
以下内容未处理、未考虑或需要进一步工作:
如遇到以下错误:
UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)
请导出以下环境变量:
export DOCKER_CLIENT_TIMEOUT=120 export COMPOSE_HTTP_TIMEOUT=120
本项目是jmhardison/docker-moodle的分支。
免费版仅支持 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 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429