
mattox/haskell-prairielearn本Docker镜像为Haskell语言编程作业提供自动化评分解决方案,专为Prairielearn在线学习平台设计,作为外部评分服务实现代码提交后的实时评估。镜像集成Haskell编译环境与评分逻辑,可无缝对接Prairielearn平台,实现作业提交、代码检测、测试执行及分数生成的全流程自动化。
bashdocker run -d \ -p 8080:8080 \ -v /path/to/test-cases:/app/test-cases \ -v /path/to/score-rules:/app/rules \ --name haskell-grader \ your-registry/haskell-prairielearn-grader:latest
-p 8080:8080:映射容器评分服务端口到主机-v /path/to/test-cases:/app/test-cases:挂载本地测试用例目录(需包含.hs测试文件)-v /path/to/score-rules:/app/rules:挂载评分规则配置文件(JSON格式)| 环境变量 | 说明 | 默认值 |
|---|---|---|
GRADER_PORT | 评分服务监听端口 | 8080 |
TEST_TIMEOUT | 单个测试用例执行超时时间(秒) | 30 |
MAX_MEMORY | 单任务内存限制(MB) | 512 |
SCORE_RULES_PATH | 评分规则文件路径 | /app/rules/score.json |
示例配置:
bashdocker run -d \ -e TEST_TIMEOUT=60 \ -e MAX_MEMORY=1024 \ -p 8080:8080 \ your-registry/haskell-prairielearn-grader:latest
配置Prairielearn外部评分器
在Prairielearn课程实例配置文件中添加:
json{ "externalGrader": { "url": "[***]", "enabled": true } }
作业题目配置
在Haskell作业题目目录中创建grader.json,指定评分参数:
json{ "testCaseDir": "/app/test-cases/assignment-1", "scoreRules": "basic-rubric.json" }
启动服务
确保评分器容器与Prairielearn服务在同一网络,或通过可访问URL通信。
json{ "testCases": [ { "name": "基础功能测试", "weight": 0.4, "passScore": 100 }, { "name": "边界条件测试", "weight": 0.3, "passScore": 100 }, { "name": "性能测试", "weight": 0.3, "passScore": 100, "timeout": 10 } ], "penalties": { "compileError": 0, "runtimeError": 0.2 } }




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