Domjudge服务器的Docker编写设置问题

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

我想在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 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
    
    查找以下行:
    初始管理员密码是……
    ,然后保存密码

  • 在web界面中设置
    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
    
    查找以下行:
    初始管理员密码是……
    ,然后保存密码

  • 在web界面中设置
    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: