
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Docker化版本的https://github.com/maths/stack_util_maximapool%E3%80%82
MaximaPool创建一个Maxima进程池,在大型生产环境中有诸多优势,包括可将Maxima进程部署在独立服务器上,以及通过池化避免STACK等待Maxima启动的时间(每次调用可节省超过250ms)。
本镜像中的STACK-maxima经过高度优化:使用池化前,一次Maxima shell调用约需4秒,现在仅需约100ms(含请求开销约200ms)。
我们可能会迁移到更高效的https://github.com/mathinstitut/goemaxima%EF%BC%88%E7%94%B1GWDG%E5%BC%80%E5%8F%91%EF%BC%89%EF%BC%8C%E5%9B%A0%E5%85%B6%E4%BD%9C%E4%B8%BA%E5%A4%9A%E6%95%99%E8%82%B2%E6%9C%BA%E6%9E%84%E6%9C%8D%E5%8A%A1%E6%8F%90%E4%BE%9B%E5%95%86%EF%BC%8C%E8%83%BD%E9%80%9A%E8%BF%87%E5%9B%BA%E5%AE%9A%E5%91%98%E5%B7%A5%E6%8F%90%E4%BE%9B%E9%95%BF%E6%9C%9F%E6%94%AF%E6%8C%81%E3%80%82%E5%B1%8A%E6%97%B6%E6%9C%AC%E9%A1%B9%E7%9B%AE%E5%B0%86%E8%A2%AB%E5%BD%92%E6%A1%A3%EF%BC%8C%E4%B8%8D%E5%86%8D%E6%8E%A5%E6%94%B6%E6%9B%B4%E6%96%B0%E3%80%82
Docker Hub上提供多个版本/标签:https://hub.docker.com/r/unihalle/maximapool/tags/
| 标签 | STACK版本 | OS/Tomcat/JRE | Maxima版本 | assStackQuestion | ILIAS | moodle-qtype_stack |
|---|---|---|---|---|---|---|
latest | 2020101501 | debian 9.9/9/11 | 5.41.0-Linux | 4.3.7 | ||
stack-2020101501 | 2020101501 | debian 9.9/9/11 | 5.41.0-Linux | 4.3.7 | ||
stack-2020070100 | 2020070100 | debian 9.9/9/11 | 5.41.0-Linux | 4.3.4 | ||
stack-2020042000 | 2020042000 | debian 9.9/9/11 | 5.41.0-Linux | 4.3.1 | ||
stack-2019090200 | 2019090200 | debian sid/9/11 | 5.41.0-Linux | 4.2.2a | ||
stack-2018080600 | 2018080600 | debian sid/9/11 | 5.41.0-Linux | 4.2.1 | ||
stack-2018030500 | 2018030500 | debian sid/9/11 | 5.41.0-Linux | 4.1+ https://github.com/maths/moodle-qtype_stack/tree/9bf7a7ff6118086480f2b3db5fbb933150c8fa49 | ||
stack-2017121800 | 2017121800 | debian sid/9/10 | 5.41.0-Linux | ***ff | 5.3 | 4.1 |
stack-2014083000 | 2014083000 | debian sid/9/9 | 5.41.0-Linux | c23c787 / 9a42ef8 https://github.com/ilifau/assStackQuestion/issues/32 | 5.0-5.1/5.2 | 3.3 |
ILIAS(assStackQuestion插件)
运行命令:$(grep stackmaximaversion ${ILIAS_PLUGIN_STACK}/classes/stack/maxima/stackmaxima.mac | grep -oP "\d+"),其中${ILIAS_PLUGIN_STACK}是assStackQuestion插件目录的绝对或相对路径。
Moodle(moodle-qtype_stack插件)
运行命令:$(grep stackmaximaversion $MOODLE/question/type/stack/stack/maxima/stackmaxima.mac | grep -oP "\d+"),其中$MOODLE是服务器上Moodle站点的根目录。
aufs**作为存储驱动,可能导致容器运行问题。可通过docker info查看当前存储驱动,对于Debian和Ubuntu(2018年后),推荐使用overlay2。创建以下文件:
volumes/pool.conf(请根据需求调整值,并确保文件对所有人可读[chmod o+r]):
# Maxima池配置 # 时间单位:毫秒 # 大小限制 size.min = 5 size.max = 15 # 同时启动进程的限制,结合更新频率定义最大负载 start.limit = 4 # 池更新周期(更新间隔毫秒) update.cycle = 500 # 用于估算的数据集大小,若使用量不恒定则不宜过大 adaptation.averages.length = 5 # 池大小取决于需求和启动时间,系统尝试维持最小大小,因需求可能变化,建议使用安全乘数 adaptation.safety.multiplier = 3.0
.env:
MAXIMAPOOL_ADMIN_PASSWORD=此处输入强密码!
docker run -d \ --name TestMaximaPool \ -e "MAXIMAPOOL_ADMIN_PASSWORD=此处输入强密码!" \ -p "8765:8080" \ -v "/path/to/volumes/pool.conf:/opt/maximapool/pool.conf:ro" \ unihalle/maximapool
现在可访问池:[***]
最小示例(将8765端口绑定到localhost):
docker-compose.yaml:
version: "2" services: maximal-pool: image: unihalle/maximapool:stack-2017121800 restart: always environment: - MAXIMAPOOL_ADMIN_PASSWORD ports: - "127.0.0.1:8765:8080" volumes: - "./volumes/pool.conf:/opt/maximapool/pool.conf:ro"
访问池:[***]
在docker-compose网络内,URL为http://maximal-pool:8080/MaximaPool/MaximaPool。
以下是完整示例,展示如何在docker-compose管理的网络中使用反向代理提供HTTP密码认证和加密。请将$VIRTUAL_HOST替换为实际主机名。
HTTP基础认证的缺点是每次请求都会哈希密码,若选择较重的哈希(>8)可能会减慢代理速度。
# 创建pool.conf和.env文件(如最小示例所述) # 创建htpasswd文件(需安装apache-utils) mkdir -p passwords && htpasswd -cBC 8 passwords/$VIRTUAL_HOST ${USER} # 或使用Docker:docker run --rm httpd htpasswd -nbB ${USER} ${PASSWORD} > passwords/$VIRTUAL_HOST # 添加证书供反向代理读取 mkdir -p certs && cp VIRTUAL_HOST.crt certs/ && cp VIRTUAL_HOST.key certs/
docker-compose.yaml:
version: "2" services: maximal-pool: image: unihalle/maximapool:stack-2018030500 restart: always environment: - MAXIMAPOOL_ADMIN_PASSWORD - VIRTUAL_HOST=$VIRTUAL_HOST - VIRTUAL_PORT=8080 volumes: - "./volumes/pool.conf:/opt/maximapool/pool.conf:ro" - "./volumes/logs/tomcat:/usr/local/tomcat/logs" - "/etc/localtime:/etc/localtime:ro" reverse-proxy: image: jwilder/nginx-proxy:alpine environment: - DEFAULT_HOST=$VIRTUAL_HOST ports: - "8065:80" - "8765:443" restart: always volumes: - /var/run/docker.sock:/tmp/docker.sock:ro - ./certs:/etc/nginx/certs:ro - ./passwords:/etc/nginx/htpasswd:ro
启动并查看日志:docker-compose up -d && docker-compose logs -f
配置正确的话,访问[***]
按Ctrl+C退出日志查看,Tomcat日志存储于./volumes/logs/tomcat。若需控制日志内容,可覆盖/usr/local/tomcat/conf/server.xml(https://tomcat.apache.org/tomcat-9.0-doc/config/valve.html#Access_Log_Valve%EF%BC%89%EF%BC%8C%E9%80%9A%E8%BF%87%E6%8C%82%E8%BD%BD%E6%96%87%E4%BB%B6%E6%88%96%E7%9B%AE%E5%BD%95%EF%BC%8C%E6%88%96%E4%BD%BF%E7%94%A8Dockerfile%E8%A6%86%E7%9B%96%E3%80%82
可运行多个STACK版本或多个池:将包含正确内容和权限的卷挂载到/opt/maximapool/%%VERSION%%/。也可使用容器本身生成自定义STACK-maxima池,工具链、lisp和Maxima已预安装。
还可构建适用于特定版本Moodle https://github.com/maths/moodle-qtype_stack%E7%9A%84%E9%95%9C%E5%83%8F%EF%BC%9A%E7%A1%AE%E4%BF%9D%60assets/moodle-qtype_stack%60%E5%AD%90%E6%A8%A1%E5%9D%97%E8%B7%9F%E8%B8%AA%E4%B8%8EMoodle%E4%B8%AD%E5%AE%89%E8%A3%85%E7%9A%84%60qtype_stack%60%E6%8F%92%E4%BB%B6%E7%89%88%E6%9C%AC%E5%8C%B9%E9%85%8D%E7%9A%84%E6%8F%90%E4%BA%A4%EF%BC%8C%E7%84%B6%E5%90%8E%E4%BD%BF%E7%94%A8%60--build-arg BUILD_FOR_MOODLE=1`参数构建镜像。
在Moodle端,STACK配置位于“站点管理 -> 插件 -> 问题类型 -> STACK插件设置”。要与MaximaPool Docker容器配合使用,需设置:
maxima-pool:8080/MaximaPool/MaximaPoolmaxima-pool是Maxima容器的主机名,需确保Moodle web服务器可访问。
/data_dir/xqcas/stack/maximalocal.mac/data_dir/xqcas/stack/maximalocal.mac(ILIAS)或$MOODLEDATA/stack/**/maximalocal.mac(Moodle)生成的值更新assets/maximalocal.mac.template和assets/optimize.maccd assets/moodle-qtype_stack && git checkout [ref] && cd ../.. && git add assets/moodle-qtype_stack && git commit -m "Update to STACK [stackversion]"(影响moodle-qtype_stack版本,可通过cd assets/moodle-qtype_stack && git log查看)cd assets/assStackQuestion && git checkout [ref] && cd ../.. && git add assets/assStackQuestion && git commit -m "Update to STACK [stackversion]"(影响assStackQuestion版本,可能影响ILIAS版本,assStackQuestion有master-ilias53等分支)docker-compose exec [maximapool] bash -c 'cat /etc/debian_version'assets/optimize.mac:关注“此变量控制STACK支持的可选包”部分,确保加载所有相关包(参考Moodle https://github.com/maths/moodle-qtype_stack/blob/master/stack/cas/installhelper.class.php#L32%E3%80%81ILIAS https://github.com/ilifau/assStackQuestion/blob/629f817624b1dfb7cbb74aa0f1135c0ad39c56df/classes/stack/cas/installhelper.class.php#L37%EF%BC%8C%E6%88%96%E7%9B%B4%E6%8E%A5%E6%9F%A5%E7%9C%8BLMS%E7%94%9F%E6%88%90%E7%9A%84stackmaxima.mac%E6%96%87%E4%BB%B6%EF%BC%89assets/maximalocal.mac.template:参考Moodle https://github.com/maths/moodle-qtype_stack/blob/1130d860ebb8e03d78c6c7973ba48c2dfa844685/stack/maxima/sandbox.wxm%E3%80%81ILIAS https://github.com/ilifau/assStackQuestion/blob/629f817624b1dfb7cbb74aa0f1135c0ad39c56df/classes/stack/maxima/sandbox.wxm%EF%BC%8C%E4%BD%86%E5%BB%BA%E8%AE%AE%E7%9B%B4%E6%8E%A5%E6%9F%A5%E7%9C%8BLMS%E7%94%9F%E6%88%90%E7%9A%84stackmaxima.mac%E6%96%87%E4%BB%B6%E3%80%82bashgit clone --recurse-submodules -j4 git@github.com:uni-halle/maximapool-docker.git # 若-j4导致问题可省略 cd maximapool-docker docker build . # 或docker-compose build;可忽略未定义环境变量的警告
git clone --recurse-submodules -j4 git@github.com:uni-halle/maximapool-docker.git;若已克隆,进入仓库目录并获取子模块:cd maximapool-docker && git submodule update --init --recursive您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务