
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
该镜像适用于希望为 https://www.domjudge.org/ 项目做贡献但不想配置完整安装环境的开发者。它提供了一个预配置的开发环境,使贡献者能够专注于代码开发而非环境配置。
该镜像专为 DOMjudge 项目贡献者设计,适用于:
该镜像可在 https://hub.docker.com 获取,镜像名称为 domjudge/domjudge-contributor。
1. 启动 MariaDB 容器
在启动 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 13306:3306 docker.xuanyuan.run/mariadb --max-connections=1000
此命令会启动一个 MariaDB 容器,设置:
rootpwdomjudge 的用户,密码为 djpwdomjudge 的空数据库若需在容器删除后保留 MySQL 数据,请参考 https://hub.docker.com/r/_/mariadb/ Docker Hub 页面的说明。
2. 启用 cgroups(仅 Linux)
Linux 用户需要确保启用了 cgroups。具体设置方法请参考 https://www.domjudge.org/docs/admin-manual-3.html#ss3.7%E3%80%82Windows 和 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 12345:80 --name domjudge --privileged docker.xuanyuan.run/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: docker.xuanyuan.run/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: docker.xuanyuan.run/mariadb container_name: dj-mariadb environment: MYSQL_ROOT_PASSWORD: rootpw MYSQL_USER: domjudge MYSQL_PASSWORD: djpw MYSQL_DATABASE: domjudge ports: - "13306:3306" command: --max-connections=1000 restart: unless-stopped domjudge: image: docker.xuanyuan.run/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: - "12345:80" privileged: true depends_on: - mariadb restart: unless-stopped
启动服务:
bashdocker-compose up -d
该镜像的源代码可在 https://github.com/DOMjudge/domjudge-packaging/tree/main/docker-contributor/ 中找到。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务