DOMjudge的Docker安装 使用Nginx代理的配置方法

本文详细介绍了如何在Linux系统中使用apt安装Docker、Nginx,并通过Docker镜像部署DOMjudge和MariaDB,同时设置了国内镜像源加速下载。指南还包括了配置Nginx代理、管理DOMjudge容器及判题机,以及必要的配置文件修改和容器日志查看。
摘要由CSDN通过智能技术生成

DOMjudge的Docker安装 使用Nginx代理的配置方法

使用apt安装Docker、Nginx、Vim(用来修改Nginx配置文件)

apt update #更新一下,不然可能会报错
apt install docker -y
apt install nginx -y
apt install vim -y

使用

docker -v

查看一下Docker安装是否成功

Docker下载DOMjudge需要的镜像

MariaDB 数据库
docker pull mariadb
domserver Web服务
docker pull domjudge/domserver
judgehost 判题机
docker pull domjudge/judgehost

建议先修改Docker国内镜像源再下载

Docker中国区官方镜像:
https://registry.docker-cn.com
网易:
http://hub-mirror.c.163.com
ustc:
https://docker.mirrors.ustc.edu.cn
中国科技大学:
https://docker.mirrors.ustc.edu.cn
阿里云:
https://cr.console.aliyun.com/

创建或修改 /etc/docker/daemon.json 文件,修改为如下形式

{
    "registry-mirrors" : [
    "https://registry.docker-cn.com",
    "https://docker.mirrors.ustc.edu.cn",
    "http://hub-mirror.c.163.com",
    "https://cr.console.aliyun.com/"
  ]
}

重启docker服务使配置生效

systemctl restart docker.service

镜像下载完成后使用以下命令创建启动容器

启动MariaDB数据库

docker run -d --name dj-mariadb -e CONTAINER_TIMEZONE=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=rootpw -e MYSQL_USER=domjudge -e MYSQL_PASSWORD=djpw -e MYSQL_DATABASE=domjudge -p 13306:3306 mariadb --max-connections=1000

容器第一次创建后有参数“-d”会在后台运行
MYSQL_ROOT_PASSWORD=rootpw 数据库root用户的密码,可以修改

启动DOMserver

docker run --link dj-mariadb:mariadb -d -e CONTAINER_TIMEZONE=Asia/Shanghai -e MYSQL_HOST=mariadb -e MYSQL_USER=domjudge -e MYSQL_DATABASE=domjudge -e MYSQL_PASSWORD=djpw -e MYSQL_ROOT_PASSWORD=rootpw -p 8000:80 --name domserver domjudge/domserver:latest

命令中有对应的数据库的用户和密码,与修改有的一致就可以。
容器创建后会生成一个管理员的密码和一个判题机的密码,可以在其日志里查看

docker logs -t --since 10m 容器ID  #查看该容器十分钟内的日志

在这里插入图片描述

此时访问主机的8000端口就可以看到domserver的Web页面了

三个判题机

docker run -d --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro --name judgehost-0 --link domserver:domserver --hostname judgedaemon-0 -e CONTAINER_TIMEZONE=Asia/Shanghai -e JUDGEDAEMON_USERNAME=judgehost-0 -e JUDGEDAEMON_PASSWORD=judgehost-0 -e DAEMON_ID=0 domjudge/judgehost:latest

docker run -d --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro --name judgehost-1 --link domserver:domserver --hostname judgedaemon-1 -e CONTAINER_TIMEZONE=Asia/Shanghai -e JUDGEDAEMON_USERNAME=judgehost-1 -e JUDGEDAEMON_PASSWORD=judgehost-1 -e DAEMON_ID=1 domjudge/judgehost:latest

docker run -d --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro --name judgehost-2 --link domserver:domserver --hostname judgedaemon-2 -e CONTAINER_TIMEZONE=Asia/Shanghai -e JUDGEDAEMON_USERNAME=judgehost-2 -e JUDGEDAEMON_PASSWORD=judgehost-2 -e DAEMON_ID=2 domjudge/judgehost:latest

判题机用户名密码-e JUDGEDAEMON_USERNAME=judgehost-0 -e JUDGEDAEMON_PASSWORD=judgehost-0需要先登录管理员添加用户和修改密码(用户类型是judgehost)。

设置好后基本的DOMjudge就安排好了。

DOMjudge代理配置

首先在主机上配置Nginx的代理服务,找到/etc/nginx/sites-available/default,使用Vim打开

vim /etc/nginx/sites-available/default #可直接打开default

在这里是直接修改的Nginx的默认配置,其实这个文件会在/etc/nginx下的nginx.conf中被引用

        ·····前边内容省略(这是default文件的一部分)
        root /var/www/html;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        server_name _;
        
        #只需要插入一下三行
        location /domjudge/ {
                proxy_pass http://127.0.0.1:8000/;  # 创建容器的时候用了8000端口
        }

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }
        ·····后边也是

然后是容器里domserver的Nginx的配置

使用以下命令进入容器

docker exec -it 容器ID bash

修改Nginx的配置文件用的是Vim

以下操作是在容器内进行的(也就是使用容器的终端,对容器执行的操作)
apt update			# 更新
apt install vim		# 安装Vim

使用Vim编辑/etc/nginx/snippets/domjudge-inner

在这里插入图片描述

经过多次尝试,其实修改①就可以

修改完保存。执行

nginx -s reload		# Nginx重载

访问http://localhost/domjudge/就可以看到DOMjudge了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值