方案1: 修改daemon配置文件 /etc/docker/daemon.json (如果没有该文件,新建一个然后将如下内容复制进去):
{
"registry-mirrors" : [
"http://registry.docker-cn.com",
"http://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
],
"insecure-registries" : [
"registry.docker-cn.com",
"docker.mirrors.ustc.edu.cn"
],
"debug" : true,
"experimental" : true
}
# 使之生效
sudo systemctl daemon-reload
sudo systemctl restart docker
方案2:
方案3:
拉取MariaDB 镜像(dj-mariadb) && 创建一个数据库用户(用户名: domjudge 密码rootpw) 配置一些环境变量
docker run -it --name dj-mariadb -e MYSQL_ROOT_PASSWORD=rootpw -e MYSQL_USER=domjudge -e MYSQL_PASSWORD=djpw -e MYSQL_DATABASE=domjudge -p 13306:3306 mariadb --max-connections=10000
拉取DOMserver镜像
docker run --link dj-mariadb:mariadb -itd -e MYSQL_HOST=mariadb -e MYSQL_USER=domjudge -e MYSQL_DATABASE=domjudge -e MYSQL_PASSWORD=djpw -e MYSQL_ROOT_PASSWORD=rootpw -e CONTAINER_TIMEZONE=Asia/Shanghai -p 80:80 --name domserver domjudge/domserver:latest
其中 -p 12345:80 代表把容器内的80端口映射到本地12345端口
Domserver 的admin和judgehost用户的初始密码应该在启动时显示出来,如果没有显示,可以试试这个: (最好记一下这个,后面要用到, 如果忘记密码,看这里)
docker exec -it domserver cat /opt/domjudge/domserver/etc/initial_admin_password.secret
docker exec -it domserver cat /opt/domjudge/domserver/etc/restapi.secret
容器跑起来之后就可以通过 http://localhost:12345/ 登录进入管理员账号 有界面说明domserver配置没有问题了
# 看nginx 的日志
docker exec -it domserver [command]
[command]
-- nginx-access-log: tail the access log of nginx.
-- nginx-error-log: tail the error log of nginx.
-- symfony-log: for DOMjudge using Symfony (i.e. 6.x and higher), tail the symfony log.
# 重启nginx php 命令
docker exec -it domserver supervisorctl restart [service]
[service]
-- nginx
-- php
拉取judgehost 镜像
# 连到本地的 Domserver
docker run -itd --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro --name judgehost-0 --link domserver:domserver --hostname judgedaemon-0 -e DAEMON_ID=0 -e CONTAINER_TIMEZONE=Asia/Shanghai -e JUDGEDAEMON_PASSWORD=xrHPIvLhzVMNFat6 domjudge/judgehost:latest
# 连到远端的Domserver
docker run -itd --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro --name judgehost-0 --hostname judgedaemon-1 -e DAEMON_ID=0 -e CONTAINER_TIMEZONE=Asia/Shanghai -e JUDGEDAEMON_PASSWORD=[domserver 给的密码] -e DOMSERVER_BASEURL=http://domjudge.zuojiaxun.cn:12345/ domjudge/judgehost:latest
# -v 挂载目录 配置cgroup
# 坑 ⚠️
# 同一台设备配置若干个judgehost 要保证每个DEAMON_ID不相同
# 若干个judgehost 连到同一个domserver 要保证每个judgehost的 hostname不同 否则网页端看不到
#upd:2020.11.5
# 如果配置judgehost出现如下错误:
# Error: cgroup support missing memory features in running kernel. Unable to continue.
# To fix this, please make the following changes:
# 1. In /etc/default/grub, add 'cgroup_enable=memory swapaccount=1' to GRUB_CMDLINE_LINUX_DEFAULT
# 2. Run update-grub
# 3. Reboot
upd: 安装 adminer (数据库管理工具, 用于手动修改数据库里面的若干数据 (用于更新logo & 运维) )
拉取adminer 镜像
docker run --link dj-mariadb:domdb -p 8080:8080 adminer
完结撒花