
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
https://img.shields.io/docker/pulls/jimsihk/alpine-moodle.svg](https://hub.docker.com/r/jimsihk/alpine-moodle/) !https://img.shields.io/docker/image-size/jimsihk/alpine-moodle !https://img.shields.io/badge/nginx-1.28-brightgreen.svg !https://img.shields.io/badge/php-8.4-brightgreen.svg !https://img.shields.io/badge/moodle-5.0-yellow !https://img.shields.io/badge/license-MIT-blue.svg
基于Alpine Linux构建的Docker Moodle环境,具备高可用性(HA)能力。
仓库:https://github.com/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 <容器名称>查看)https://img.shields.io/badge/renovate-enabled-yellow.svg]([***]
Moodle版本和包依赖通过Renovate进行监控,并通过拉取请求自动更新:https://github.com/renovatebot/renovate
https://github.com/jimsihk/alpine-moodle/actions/workflows/nightly.yml/badge.svg](https://github.com/jimsihk/alpine-moodle/actions/workflows/nightly.yml)
GitHub Action中的夜间构建会扫描变更,然后执行标记并在容器仓库发布新版本。
发布标签格式为:XXX.YYY.ZZ
version.php的变更编号例如:对于Moodle 4.1.1+分支_401_版本2022112801.06,发布标签将从401.106.0开始
镜像可在多个仓库获取:
alpine-moodle:XXX.YYY.ZZZ
alpine-moodle:XXX.YYY.ZZZ-slim
UPDATE_MOODLE_CODE)ARG_ENABLE_GIT_CLONE控制启动Docker容器:
docker compose up
启动Moodle集群:
./generate_ssl_cert.sh docker compose --file docker-compose.replica.yml up
使用提供的凭据(环境变量)登录系统
示例docker-compose文件
generate_ssl_cert.sh生成localhost的示例SSL证书在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设置可参考基础镜像https://github.com/jimsihk/alpine-php-nginx/blob/dev/README.md
AUTO_UPDATE_MOODLE和UPDATE_MOODLE_CODE的重要说明如果设为true,容器启动时执行更新会将Moodle设为https://docs.moodle.org/401/en/Maintenance_mode#CLI_maintenance_mode%E3%80%82%E6%AD%A4%E6%97%B6%E4%BB%BB%E4%BD%95%E7%94%A8%E6%88%B7%EF%BC%88%E5%8C%85%E6%8B%AC%E7%AE%A1%E7%90%86%E5%91%98%EF%BC%89%E9%83%BD%E6%97%A0%E6%B3%95%E4%BD%BF%E7%94%A8Moodle%E3%80%82
如果部署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
无法创建/更新Moodle角色,提示“角色简称不正确”(https://github.com/erseco/alpine-moodle/issues/26%EF%BC%89
===FULL_DESC===# 基于Alpine Linux的高可用性Moodle
https://img.shields.io/docker/pulls/jimsihk/alpine-moodle.svg](https://hub.docker.com/r/jimsihk/alpine-moodle/) !https://img.shields.io/docker/image-size/jimsihk/alpine-moodle !https://img.shields.io/badge/nginx-1.28-brightgreen.svg !https://img.shields.io/badge/php-8.4-brightgreen.svg !https://img.shields.io/badge/moodle-5.0-yellow !https://img.shields.io/badge/license-MIT-blue.svg
基于Alpine Linux构建的Docker Moodle环境,具备高可用性(HA)能力。
仓库:https://github.com/jimsihk/alpine-moodle
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务