使用 docker 作为 online judge(OJ) 的 sandbox (1)

This article is deprecated, please see here for more details. 最近业务要实现在线代码判定(OJ)的功能,简单调研了一下,准备使用docker实现。业务流程大概如下: 大概的思路是: nginx 判定请求是否应该转发给 OJ 集群,比如:只要请求匹配 ^~ /oj 都转发给 docker 集群处理; docker 集群接收到请求后,先将代码保存在 web server 本地; 如果待判定的语言不需要编译即可执行 (比如PHP、Python),则直接保存在 web server 的某个目录下(例如 /tmp/oj);如果需要编译(比如 c、java),则先编译,将编译后的可执行文件保存在同一个目录下; 将 web server 上保存代码的目录(上文中的 /tmp/oj)挂载到 docker 镜像的某个目录下(例如 /mnt) 调用 docker 知行代码,并返回结果。 下面是相对详细的一些步骤: 安装 docker 升级 docker 镜像中的 OS 将镜像提交到 docker hub 业务上处理提交过来的代码 当然,上面的限制并不是特别完全。对于业务来讲,还有以下几个问题需要考虑: … Continue reading "使用 docker 作为 online judge(OJ) 的 sandbox (1)"

Read More