docker - 关于Domjudge服务器的Docker-compose设置问题

标签 docker docker-compose

我想在Debian9的docker中使用mriadb,phpmyadmin,法官主机构建domjudge服务器,

我已经安装了docker和docker compose
这是下面的docker-compose.yml代码。
我使用docker-compose up -d,弹出一些警告和错误。

这是整个docker-compose.yml文件的代码

http://codepad.org/souBFdFz

警告和错误消息:

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,法官主机设置domjudge服务器

谢谢!

更新资料

我已经试过几次这个文件,它的结果不尽相同,但仍然无法连接到服务器(domjudge和phpmyadmin)。

这是消息

/image/qDcDd.jpg

最佳答案

不幸的是,由于应用程序的构建方式,您实际上不可能做的事情:容器需要彼此等待,其中一些容器需要手动操作。

但是,这是一系列有效的操作,它将启动并运行所有容器。

注意:我删除了网络声明,因为它们没有添加任何值。

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
    
  • 从日志中获取管理员密码:o​​jit_rli

    docker-compose logs dj-domserver
    

    查找以下行:Initial admin password is ....并保存密码。
  • 在Web界面中设置judgehost密码:打开http://localhost:9090并使用admin用户和您在上一步中保存的密码登录。转到Users,然后单击judgehost用户。在其中将密码更改为domjudge(根据您在docker-compose.yml中为JUDGEDAEMON_PASSWORD设置的密码。保存数据。
  • 启动其余容器:

  • 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
    

    关于docker - 关于Domjudge服务器的Docker-compose设置问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57531159/

    相关文章:

    docker - 无法使用 Docker Build 下载软件包

    docker - 使用 Docker 在 React Native 中热重载不起作用

    Docker 放置首选项与 Docker 放置约束

    Docker 容器连接到 MSSQL

    使用 Docker Desktop 在 WSL2 上构建 Docker 卷

    Docker-compose 从 env 文件指定标签

    windows - Boot2docker/Windows : can't run bash on Ubuntu container

    docker - 访问容器从Azure VSTS上的Hosted Linux Agent从Docker Compose步骤启动

    docker - 无需重新启动守护程序即可重新加载 docker 日志记录配置

    docker - Docker容器网络-Kafka Producer