Online Judge系统(简称OJ)是一个在线的判题系统。用户可以在线提交程序多种程序(如C、C++、Python)源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。
以前是知道各个大学都有自己的OJ系统用来训练ACM的。
青岛大学的这个开源Online Judge系统是比较新的,界面感觉也不错,还是开源的,还可以用Docker直接搭建,就很方便了。
Online Judge平台搭建
青岛大学的OJ项目地址:https://github.com/QingdaoU/OnlineJudge/blob/master/README-CN.md
上面有OJ平台搭建的项目地址:https://github.com/QingdaoU/OnlineJudgeDeploy/tree/2.0
我是在一台装了Ubuntu 20.04 LTS的机器上装的。
1.下载
1 | git clone -b 2.0 https://github.com/QingdaoU/OnlineJudgeDeploy.git && cd OnlineJudgeDeploy |
执行完上面的命令后,会进入OnlineJudgeDeploy目录。
不能用git下载的话,直接把上面OJ平台项目的Code包一起下载下来。然后解压到OnlineJudgeDeploy目录后,再cd进入目录,一样的。
2.启动服务
1).docker-compose安装
用的是docker-compose安装一键部署。
所以,需要提前安装Docker(Ubuntu安装Docker)和docker-compose。
如果装了Docker,没有安装docker-compose的话,有python、pip的话就很简单了,直接用pip命令安装就行了:
1 | pip install docker-compose |
2).docker-compse.yml 配置文件
因为服务会有个地址,涉及到端口号会不会冲突。所以,可以先看下OnlineJudgeDeploy目录下的docker-compse.yml配置文件,上面项目地址中也可以查看这个文件。
文件中可以看到是开了好几个服务的:
- oj-redis
- oj-postgres:数据库,可以看到设置的数据库DB名,用户USER名和密码PASSWORD
- judge-server:服务器
- oj-backend:最后看到这个是依赖以上的服务的。重点就是最下面这个端口号了:前面的默认的映射到本机是80端口(HTTP)和443端口(HTTPS)。
1
2
3
4...
ports:
- "0.0.0.0:80:8000"
- "0.0.0.0:443:1443"
这个只要不冲突,就随便你自己改了。
比如一般不想冲突的话,我改成如下的:
1 | ... |
3).docker-compose启动服务
用vi命令修改好配置文件后,用以下命令一键部署启动就行:
1 | docker-compose up -d |
根据网速情况,大约2到30分钟都有可能,正常的话,感觉一般几分钟就好了。
常用的docker-compose还有以下几个:
1 | docker-compose help # 查看帮助 |
4).服务成功启动
还是在OnlineJudgeDeploy目录下,用docker-compose ps
命令查看结果:
1 | ubuntu@VM-8-10-ubuntu:~/onlinejudge/OnlineJudgeDeploy$ docker-compose ps |
docker ps -a
命令也是可以查看到这些所有容器的(judge-server、oj-backend、oj-postgres和oj-redis)
前端登录地址:http://ip:8080 (8080是对应8000端口映射到本机的地址)
后台管理地址:http://ip:8080/admin
默认超级管理员用户名为root,密码为rootroot
关于数据备份与恢复看这篇:QingdaoU OnlineJudge 数据备份与恢复
- 本文标题:Docker搭建QingdaoU OnlineJudge平台
- 本文作者:HDUZN
- 创建时间:2022-12-16 20:15:09
- 本文链接:http://hduzn.cn/2022/12/16/Docker搭建QingdaoU-OnlineJudge平台/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!