domjudge/domjudge-contributor该镜像适用于希望为 DOMjudge 项目做贡献但不想配置完整安装环境的开发者。它提供了一个预配置的开发环境,使贡献者能够专注于代码开发而非环境配置。
该镜像专为 DOMjudge 项目贡献者设计,适用于:
该镜像可在 Docker Hub 获取,镜像名称为 domjudge/domjudge-contributor。
在启动 DOMjudge 容器前,需要准备 MySQL / MariaDB 数据库。最简单的方法是使用 MariaDB Docker 容器:
bashdocker run -it --name dj-mariadb -e MYSQL_ROOT_PASSWORD=rootpw -e MYSQL_USER=domjudge -e MYSQL_PASSWORD=djpw -e MYSQL_DATABASE=domjudge -p ***:3306 mariadb --max-connections=1000
此命令会启动一个 MariaDB 容器,设置:
rootpwdomjudge 的用户,密码为 djpwdomjudge 的空数据库若需在容器删除后保留 MySQL 数据,请参考 MariaDB Docker Hub 页面的说明。
Linux 用户需要确保启用了 cgroups。具体设置方法请参考 DOMjudge 文档中关于 judgehost 配置的部分。Windows 和 macOS 上的 Docker 已在其 Linux 虚拟机中预设了这些选项。
bashdocker run -v [本地DOMjudge代码路径]:/domjudge -v /sys/fs/cgroup:/sys/fs/cgroup:ro --link dj-mariadb:mariadb -it -e MYSQL_HOST=mariadb -e MYSQL_USER=domjudge -e MYSQL_DATABASE=domjudge -e MYSQL_PASSWORD=djpw -e MYSQL_ROOT_PASSWORD=rootpw -p ***:80 --name domjudge --privileged domjudge/domjudge-contributor
参数说明:
[本地DOMjudge代码路径] 替换为你本地克隆的 DOMjudge 仓库路径/domjudge 卷后添加 :cached 参数以提高 Web 服务器性能,如:-v [本地DOMjudge代码路径]:/domjudge:cached容器启动后,会自动设置 DOMjudge 维护者安装环境、配置数据库、创建 chroot 环境,然后启动 nginx、PHP-FPM 和两个 judgedaemon。
Web 界面可通过 http://localhost:***/ 访问。使用用户名 admin 和 etc/initial_admin_password.secret 文件中的密码登录。
注意:DOMjudge 6.0.0 及以上版本的 Web 服务器配置默认使用调试前端控制器。
默认不加载示例数据,可通过以下命令手动加载:
bashbin/dj_setup_database install-examples
容器支持以下环境变量:
| 环境变量 | 默认值 | 说明 |
|---|---|---|
CONTAINER_TIMEZONE | Europe/Amsterdam | 容器内时区设置 |
MYSQL_HOST | mariadb | MySQL 主机地址 |
MYSQL_USER | domjudge | MySQL 用户名 |
MYSQL_PASSWORD | domjudge | MySQL 用户密码 |
MYSQL_ROOT_PASSWORD | domjudge | MySQL root 用户密码 |
MYSQL_DATABASE | domjudge | 数据库名称 |
FPM_MAX_CHILDREN | 40 | PHP FPM 最大子进程数 |
DJ_SKIP_MAKE | 0 | 设置为 1 可跳过维护者安装和编译命令,加快容器启动速度 |
为避免通过环境变量传递敏感信息,可使用 MYSQL_PASSWORD_FILE 和 MYSQL_ROOT_PASSWORD_FILE 变量指定包含密码的文件路径。这适用于与 Docker Compose 的 secrets 功能配合使用:
yamlservices: domjudge-contributor: image: domjudge/domjudge-contributor:${DOMJUDGE_VERSION} secrets: - domjudge-mysql-pw environment: MYSQL_PASSWORD_FILE: /run/secrets/domjudge-mysql-pw
可通过以下语法在容器内执行命令:
bashdocker exec -it domjudge [command]
nginx-access-log: 查看 nginx 访问日志nginx-error-log: 查看 nginx 错误日志judgedaemon-log 0 和 judgedaemon-log 1: 查看第一个/第二个 judgeaemon 的日志symfony-log: 查看 Symfony 日志(适用于 DOMjudge 6.x 及以上版本)submit-test-programs: 提交所有测试程序(在 DOMjudge 安装的 tests 目录中执行 make check test-stress),会自动创建 dummy 用户,密码为 dummyxdebug-enable: 启用 Xdebug 调试xdebug-disable: 禁用 Xdebug 调试获取 bash shell:
bashdocker exec -it domjudge bash
重启服务:
bashdocker exec -it domjudge supervisorctl restart [service]
其中 [service] 可以是 nginx、php、judgedaemon0 或 judgedaemon1。
Xdebug 默认未启用,因为它会显著降低请求处理速度。可通过以下命令启用和禁用:
bashdocker exec -it domjudge xdebug-enable docker exec -it domjudge xdebug-disable
Xdebug 配置如下:
xdebug.remote_autostart=1: 无需设置 cookie 或 GET 参数即可启动调试xdebug.remote_enable=1: 启用远程调试xdebug.remote_host=host.docker.internal: 连接到 Docker 主机进行调试xdebug.idekey=IDE: IDE 密钥,需在 IDE 中设置相同的值由于 chroot 脚本会将一些特殊设备复制到每个用于评测的 chroot 中,而 Docker 不支持在卷上使用这些特殊设备,因此为 /domjudge/output/judgings 创建了绑定挂载。要访问此目录内容,需通过以下命令进入容器:
bashdocker exec -it domjudge bash
然后导航到该目录。
创建 docker-compose.yml 文件:
yamlversion: '3' services: mariadb: image: mariadb container_name: dj-mariadb environment: MYSQL_ROOT_PASSWORD: rootpw MYSQL_USER: domjudge MYSQL_PASSWORD: djpw MYSQL_DATABASE: domjudge ports: - "***:3306" command: --max-connections=1000 restart: unless-stopped domjudge: image: domjudge/domjudge-contributor container_name: domjudge volumes: - [本地DOMjudge代码路径]:/domjudge - /sys/fs/cgroup:/sys/fs/cgroup:ro environment: MYSQL_HOST: mariadb MYSQL_USER: domjudge MYSQL_PASSWORD: djpw MYSQL_ROOT_PASSWORD: rootpw MYSQL_DATABASE: domjudge ports: - "***:80" privileged: true depends_on: - mariadb restart: unless-stopped
启动服务:
bashdocker-compose up -d
该镜像的源代码可在 domjudge-packaging GitHub 项目 中找到。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
MacOS OrbStack 容器配置
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务