jimsihk/alpine-moodle能力。
仓库:[***]
ARG_MOODLE_PLUGIN_LIST预安装Moodle插件ARG_MOODLE_GIT_URL和ARG_MOODLE_GIT_BRANCH,运行时通过MOODLE_GIT_URL和MOODLE_GIT_BRANCH)docker logs -f <容器名称>查看)ARG_ENABLE_GIT_CLONE控制启动Docker容器:
docker compose up
启动Moodle集群:
./generate_ssl_cert.sh docker compose --file docker-compose.replica.yml up
使用提供的凭据(环境变量)登录系统
generate_ssl_cert.sh生成localhost的示例SSL证书SESSION_CACHE_*环境变量在docker-compose.yml文件中定义环境变量
| 变量名称 | 默认值 | 描述 |
|---|---|---|
| LANG | en_US.UTF-8 | |
| LANGUAGE | en_US:en | |
| SITE_URL | http://localhost | 设置公共站点URL |
| SSLPROXY | false | 禁用SSL代理以避免站点循环(例如Cloudflare) |
| DB_TYPE | pgsql | 数据库类型:mysqli - pgsql - mariadb |
| DB_HOST | postgres | 数据库主机名(如数据库容器名称) |
| DB_PORT | 5432 | 数据库端口(PostgresSQL=5432 - MySQL/MariaDB=3306) |
| DB_NAME | moodle | 数据库名称 |
| DB_USER | moodle | 数据库登录用户名 |
| DB_PASS | moodle | 数据库登录密码 |
| DB_FETCHBUFFERSIZE | 使用PgBouncer等PostgresSQL连接池时(事务模式)设为0 | |
| DB_DBHANDLEOPTIONS | false | 使用不支持发送选项的PostgresSQL连接池(如PgBouncer)时设为true |
| DB_DBPERSIST | false | 设为true可保持数据库与Moodle PHP线程的连接,可能提升性能但可能耗尽数据库连接数 |
| DB_HOST_REPLICA | 只读副本数据库主机名 | |
| DB_PORT_REPLICA | 副本数据库端口,留空则与DB_PORT相同 | |
| DB_USER_REPLICA | 副本数据库登录用户名,留空则与DB_USER相同 | |
| DB_PASS_REPLICA | 副本数据库登录密码,留空则与DB_PASS相同 | |
| DB_PREFIX | mdl_ | 数据库前缀。警告:不要使用数值,否则Moodle无法启动 |
| MOODLE_EMAIL | *** | |
| MOODLE_LANGUAGE | en | |
| MOODLE_SITENAME | New-Site | |
| MOODLE_SHORTNAME | moodle | |
| MOODLE_USERNAME | moodleuser | |
| MOODLE_PASSWORD | PLEASE_CHANGEME | |
| SMTP_HOST | smtp.gmail.com | |
| SMTP_PORT | 587 | |
| SMTP_USER | *** | |
| SMTP_PASSWORD | your_password | |
| SMTP_PROTOCOL | tls | |
| MOODLE_MAIL_NOREPLY_ADDRESS | noreply@localhost | |
| MOODLE_MAIL_PREFIX | [moodle] | |
| memory_limit | 128M | PHP脚本允许分配的最大内存(默认值继承自基础镜像) |
| client_max_body_size | 50M | 客户端请求体的最大允许大小,在“Content-Length”请求头字段中指定 |
| post_max_size | 50M | 允许的POST数据最大大小。此设置也影响文件上传。要上传大文件,此值必须大于upload_max_filesize |
| upload_max_filesize | 50M | 上传文件的最大大小 |
| max_input_vars | 5000 | 每个请求允许的最大输入变量数,至少设为5000 |
| opcache_jit_buffer_size | 64M | 为编译的JIT代码保留的共享内存量,设为0可禁用JIT |
| opcache_jit | 1235 | 配置JIT模式(默认值继承自基础镜像) |
| opcache_memory_consumption | 128 | OPcache使用的共享内存存储大小(MB)(默认值继承自基础镜像) |
| SESSION_CACHE_TYPE | 可选设置共享会话缓存存储:memcached、redis、database(留空则保持不变) | |
| SESSION_CACHE_HOST | 外部缓存存储的主机名,memcached和redis需要 | |
| SESSION_CACHE_PORT | 缓存端口,memcached=***,Redis=6379,memcached和redis需要 | |
| SESSION_CACHE_PREFIX | mdl | 缓存前缀 |
| SESSION_CACHE_AUTH | 缓存存储的认证密钥,redis可能需要 | |
| AUTO_UPDATE_MOODLE | true | 设为false禁用容器启动时执行Moodle更新(如插件) |
| UPDATE_MOODLE_CODE | true | 设为false禁用自动下载Moodle核心代码最新补丁,仅在AUTO_UPDATE_MOODLE为true或构建时ARG_ENABLE_GIT_CLONE为true时有效 |
| DISABLE_WEB_INSTALL_PLUGIN | false | 设为true禁用通过站点管理UI安装插件,有助于避免HA设置下镜像不同步 |
| MAINT_STATUS_KEYWORD | Status: enabled | 运行admin/cli/maintenance.php时检测Moodle维护状态的关键字,语言遵循Moodle站点默认语言 |
| LOCAL_CACHE_DIRECTORY | 设置本地快速文件系统路径,用于Moodle本地缓存,无需与其他实例共享 | |
| SKIP_MOODLE_CONFIG | false | 设为true跳过Moodle配置脚本 |
_更多PHP和NGINX设置可参考基础镜像[***]
AUTO_UPDATE_MOODLE和UPDATE_MOODLE_CODE的重要说明如果设为true,容器启动时执行更新会将Moodle设为CLI维护模式。此时任何用户(包括管理员)都无法使用Moodle。
如果部署Moodle容器集群以实现HA(如在Kubernetes上),建议将两者都设为false,以避免自动扩展(如添加额外容器)或容器重启(自动修复)时对用户造成意外中断。
ARG_MOODLE_PLUGIN_LIST:定义插件列表ARG_MOODLE_PLUGIN_LIST:docker buildx build . -t my_moodle_image:my_tag \ --build-arg ARG_MOODLE_PLUGIN_LIST='mod_attendance mod_checklist mod_customcert block_checklist gradeexport_checklist'
仅构建以安装额外Moodle插件(较快),创建如下Dockerfile然后构建。
Dockerfile.plugins示例:
dockerfile# Dockerfile.plugins FROM quay.io/jimsihk/alpine-moodle:latest # 安装额外插件,空格/逗号分隔的参数(可选) # 使用install-plugin-list带参数"-f"强制安装不兼容当前Moodle版本的插件 ARG ARG_MOODLE_PLUGIN_LIST='' ENV MOODLE_PLUGIN_LIST=${ARG_MOODLE_PLUGIN_LIST} RUN if [ -n "${MOODLE_PLUGIN_LIST}" ]; then /usr/libexec/moodle/install-plugin-list -p "${MOODLE_PLUGIN_LIST}"; fi && \ rm -rf /tmp/moodle-plugins
dockerfile# Dockerfile.plugins FROM quay.io/jimsihk/alpine-moodle:latest # 安装额外插件,空格/逗号分隔的参数(可选) ARG ARG_MOODLE_PLUGIN_LIST='' ENV MOODLE_PLUGIN_LIST=${ARG_MOODLE_PLUGIN_LIST} RUN /usr/libexec/moodle/download-moodle-plugin
Dockerfile.plugins构建示例:# 构建 docker buildx build . -t my_moodle_image:my_tag \ -f Dockerfile.plugins \ --build-arg ARG_MOODLE_PLUGIN_LIST='mod_attendance,mod_checklist,mod_customcert,block_checklist,gradeexport_checklist'
ARG_ALLOW_INCOMPATIBLE_PLUGIN:允许安装不兼容插件ARG_ALLOW_INCOMPATIBLE_PLUGIN可用,控制是否继续安装最新可用版本(尽管可能与当前Moodle版本不兼容),默认值为false:docker buildx build . -t my_moodle_image:my_tag \ --build-arg ARG_MOODLE_PLUGIN_LIST='mod_attendance mod_checklist mod_customcert block_checklist gradeexport_checklist' \ --build-arg ARG_ALLOW_INCOMPATIBLE_PLUGIN='true'
Dockerfile.plugins:dockerfile# Dockerfile.plugins FROM quay.io/jimsihk/alpine-moodle:latest ARG ARG_MOODLE_PLUGIN_LIST='mod_attendance mod_checklist mod_customcert block_checklist gradeexport_checklist' ARG ARG_ALLOW_INCOMPATIBLE_PLUGIN='true' ENV MOODLE_PLUGIN_LIST=${ARG_MOODLE_PLUGIN_LIST} ENV ALLOW_INCOMPATIBLE_PLUGIN=${ARG_ALLOW_INCOMPATIBLE_PLUGIN} RUN /usr/libexec/moodle/download-moodle-plugin
role-update-capability命令,注意仅插件0.39版本包含此命令===FULL_DESC===# 基于Alpine Linux的高可用性Moodle
能力。
仓库:[***]
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
MacOS OrbStack 容器配置
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务