Domjudge服务器的Docker编写设置问题
我想在Debian9的docker基础上用mriadb、phpmyadmin和judgehost构建一个domjudge服务器 我已经安装了docker和docker compose 下面是docker-compose.yml代码。 我使用了Domjudge服务器的Docker编写设置问题,docker,docker-compose,Docker,Docker Compose,我想在Debian9的docker基础上用mriadb、phpmyadmin和judgehost构建一个domjudge服务器 我已经安装了docker和docker compose 下面是docker-compose.yml代码。 我使用了docker compose up-d,并弹出了一些警告和错误 下面是整个docker-compose.yml文件代码 警告和错误消息: WARNING: some networks were defined but are not used by any
docker compose up-d
,并弹出了一些警告和错误
下面是整个docker-compose.yml文件代码
警告和错误消息:
WARNING: some networks were defined but are not used by any service: phpmyadmin, dj-judgedameons_1, dj-judgedameons_2
ERROR: dor domjudge_dj-judgedameons_2_1 Cannot start service dj-judgedameons_1 : OCI runtime create failed: container_linux.go:345: starting container process caused "process_linux.go:311:getting Starting domjudge_dj-judgedameons_1_1
…还有很多我甚至无法读取的错误消息(我认为是二进制代码或地址)
请帮助我修复它,或者如果有一种简单的方法可以使用mariadb、phpmyadmin、judgehost设置domjudge服务器
谢谢
更新 我已经尝试了这个文件好几次,结果都不一样,但它仍然无法连接到服务器(domjudge&phpmyadmin) 这是留言
不幸的是,由于应用程序的构建方式,您想要做的事情实际上是不可能的:容器需要相互等待,其中一些需要手动操作 但是,这是一系列操作,这些操作将启动并运行所有容器 注意:我删除了网络声明,因为它们没有添加任何值
version: '3'
services:
dj-mariadb:
image: mariadb
environment:
- MYSQL_ROOT_PASSWORD=rootpw
- MYSQL_DATABASE=domjudge
- MYSQL_USER=domjudge
- MYSQL_PASSWORD=djpw
command:
--max-connections=1000
dj-domserver:
image: domjudge/domserver:latest
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
environment:
- CONTAINER_TIMEZONE=Asia/Taipei
- MYSQL_ROOT_PASSWORD=rootpw
- MYSQL_DATABASE=domjudge
- MYSQL_USER=domjudge
- MYSQL_PASSWORD=djpw
ports:
- 9090:80
links:
- dj-mariadb:mariadb
dj-judgehost:
image: domjudge/judgehost:latest
privileged: true
hostname: judgedaemon-0
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
environment:
- DAEMON_ID=0
- JUDGEDAEMON_PASSWORD=domjudge
links:
- dj-domserver:domserver
dj-judgehost_1:
image: domjudge/judgehost:latest
privileged: true
hostname: judgedaemon-1
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
environment:
- DAEMON_ID=1
- JUDGEDAEMON_PASSWORD=domjudge
links:
- dj-domserver:domserver
dj-judgehost_2:
image: domjudge/judgehost:latest
privileged: true
hostname: judgedaemon-2
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
environment:
- DAEMON_ID=2
- JUDGEDAEMON_PASSWORD=domjudge
links:
- dj-domserver:domserver
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: myadmin
ports:
- 8888:80
environment:
- PMA_ARBITRARY=1
- PMA_HOST=dj-mariadb
links:
- dj-mariadb:db
docker compose up-d dj mariadb
docker compose up-d dj-domserver
docker编写日志dj-domserver
查找以下行:初始管理员密码是……
,然后保存密码
judgehost
密码:打开http://localhost:9090
并使用用户admin
和上一步保存的密码登录。转到Users
并单击judgehost
user。在此处,将密码更改为domjudge
(根据您在docker-compose.yml中为judgedemon\u密码设置的内容)。保存数据
docker compose up-d
docker-compose-ps
输出应类似于以下内容:
Name Command State Ports
---------------------------------------------------------------------------------------------------
domjudge_dj-domserver_1 /scripts/start.sh Up 0.0.0.0:9090->80/tcp
domjudge_dj-judgehost_1 /scripts/start.sh Up
domjudge_dj-judgehost_1_1 /scripts/start.sh Up
domjudge_dj-judgehost_2_1 /scripts/start.sh Up
domjudge_dj-mariadb_1 docker-entrypoint.sh --max ... Up 3306/tcp
myadmin /run.sh supervisord -n -j ... Up 0.0.0.0:8888->80/tcp, 9000/tcp
不幸的是,由于应用程序的构建方式,您想要做的事情实际上是不可能的:容器需要相互等待,其中一些需要手动操作 但是,这是一系列操作,这些操作将启动并运行所有容器 注意:我删除了网络声明,因为它们没有添加任何值
version: '3'
services:
dj-mariadb:
image: mariadb
environment:
- MYSQL_ROOT_PASSWORD=rootpw
- MYSQL_DATABASE=domjudge
- MYSQL_USER=domjudge
- MYSQL_PASSWORD=djpw
command:
--max-connections=1000
dj-domserver:
image: domjudge/domserver:latest
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
environment:
- CONTAINER_TIMEZONE=Asia/Taipei
- MYSQL_ROOT_PASSWORD=rootpw
- MYSQL_DATABASE=domjudge
- MYSQL_USER=domjudge
- MYSQL_PASSWORD=djpw
ports:
- 9090:80
links:
- dj-mariadb:mariadb
dj-judgehost:
image: domjudge/judgehost:latest
privileged: true
hostname: judgedaemon-0
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
environment:
- DAEMON_ID=0
- JUDGEDAEMON_PASSWORD=domjudge
links:
- dj-domserver:domserver
dj-judgehost_1:
image: domjudge/judgehost:latest
privileged: true
hostname: judgedaemon-1
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
environment:
- DAEMON_ID=1
- JUDGEDAEMON_PASSWORD=domjudge
links:
- dj-domserver:domserver
dj-judgehost_2:
image: domjudge/judgehost:latest
privileged: true
hostname: judgedaemon-2
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
environment:
- DAEMON_ID=2
- JUDGEDAEMON_PASSWORD=domjudge
links:
- dj-domserver:domserver
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: myadmin
ports:
- 8888:80
environment:
- PMA_ARBITRARY=1
- PMA_HOST=dj-mariadb
links:
- dj-mariadb:db
docker compose up-d dj mariadb
docker compose up-d dj-domserver
docker编写日志dj-domserver
查找以下行:初始管理员密码是……
,然后保存密码
judgehost
密码:打开http://localhost:9090
并使用用户admin
和上一步保存的密码登录。转到Users
并单击judgehost
user。在此处将密码更改为domjudge
(根据您在docker-compose.yml中设置的判断密码。保存数据
docker compose up-d
docker-compose-ps
输出应类似于以下内容:
Name Command State Ports
---------------------------------------------------------------------------------------------------
domjudge_dj-domserver_1 /scripts/start.sh Up 0.0.0.0:9090->80/tcp
domjudge_dj-judgehost_1 /scripts/start.sh Up
domjudge_dj-judgehost_1_1 /scripts/start.sh Up
domjudge_dj-judgehost_2_1 /scripts/start.sh Up
domjudge_dj-mariadb_1 docker-entrypoint.sh --max ... Up 3306/tcp
myadmin /run.sh supervisord -n -j ... Up 0.0.0.0:8888->80/tcp, 9000/tcp
您好,非常感谢。但是,我按照说明进行操作,但在第5步之后,我尝试启动其余容器时仍然出现错误。在第5步之前,我可以进入服务器(9090)并登录,但无法连接到phpmyadmin(8888)。这是错误消息的图片,看起来您的用户无法启动特权容器。您可以从docker-compose.yml中取出特权属性并重试吗?我只是注释掉所有特权属性,然后重试,这次在第3步之后,我想获取管理员,但它不起作用,并且它也无法连接到服务器。消息:我尝试了几次,结果都成功了,我不知道怎么做,但第5步仍然会弹出一些错误消息。消息:我再次尝试了我发布的原始yml文件,它给了我另一个结果。没有错误,但仍然无法连接到服务器(9090)和phpmtadmin(8888)。我不知道为什么在我键入同一命令时,它有时会给我不同的输出。原始yml:嗨,非常感谢。但是,我按照说明进行操作,但在第5步之后仍然存在错误,即我尝试启动其余容器。在第5步之前,我可以进入服务器(9090)并登录,但无法连接到phpmyadmin(8888)。这是错误消息的图片,看起来您的用户无法启动特权容器。您可以从docker-compose.yml中取出特权属性并重试吗?我只是注释掉所有特权属性,然后重试,这次在第3步之后,我想获取管理员,但它不起作用,并且它也无法连接到服务器。消息:我尝试了几次,结果都成功了,我不知道怎么做,但第5步仍然会弹出一些错误消息。消息:我再次尝试了我发布的原始yml文件,它给了我另一个结果。没有错误,但仍然无法连接到服务器(9090)和phpmtadmin(8888)。我不知道为什么有时我键入同一命令时,它会给我不同的输出。原始yml: