mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-19 01:38:19 +08:00
w: add docker installation (#152)
This commit is contained in:
1 parent
715e564971
commit
7b75a961bc
7 files changed
+174
No files matched your search
@@ -0,0 +1,45 @@
|
||||
## 首要条件
|
||||
|
||||
本文假设您已经安装了`Docker`、`docker-compose`、`git`。
|
||||
|
||||
**未安装请先安装**。
|
||||
|
||||
## 开始安装(不建议使用Windows)
|
||||
|
||||
1. 请选择磁盘空间富裕的位置,运行下面的命令。
|
||||
|
||||
`git clone https://github.com/hydro-dev/Hydro.git && cd Hydro/install/docker`
|
||||
|
||||
2. 启动服务。
|
||||
|
||||
`docker-compose up -d`
|
||||
|
||||
因为是在本机制作docker镜像,所以耗时可能会比较久。根据网速情况,大约5到30分钟就可以自动搭建完成,全程无需人工干预。
|
||||
|
||||
等命令执行完成,然后运行 `docker ps -a`,当看到所有的容器的状态没有`Exited (x) xxx`就代表 OJ 已经启动成功。
|
||||
|
||||
## 注意
|
||||
|
||||
安装过程中,会默认注册一个超级管理员账号,用来做测评账号。用户名:`root`,密码:`rootroot`。**请务必及时修改密码**。修改该账号密码后,请修改`data/judge/config/judge.yaml`中的`password`。否则可能会无法测评。
|
||||
|
||||
## 测评机默认编译器
|
||||
|
||||
测评机默认安装了以下几个编译器,如有需要,请自行安装。
|
||||
|
||||
编译器列表:
|
||||
|
||||
1. gcc
|
||||
2. python3
|
||||
3. g++
|
||||
4. fp-compiler
|
||||
5. openjdk-8-jdk-headless
|
||||
6. python
|
||||
7. php7.0-cli
|
||||
8. rustc
|
||||
9. haskell-platform
|
||||
10. libjavascriptcoregtk-4.0-bin
|
||||
11. golang
|
||||
12. ruby
|
||||
13. mono-runtime
|
||||
14. mono-mcs
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
FROM node:14
|
||||
|
||||
ADD ./entrypoint.sh /root/entrypoint.sh
|
||||
|
||||
RUN yarn global add pm2 hydrooj @hydrooj/ui-default
|
||||
|
||||
RUN chmod +x /root/entrypoint.sh
|
||||
|
||||
ENTRYPOINT /root/entrypoint.sh
|
||||
@@ -0,0 +1,27 @@
|
||||
#!/bin/sh
|
||||
|
||||
ROOT=/root/.hydro
|
||||
|
||||
mkdir -p $ROOT
|
||||
|
||||
if [ ! -f "$ROOT/addon.json" ]; then
|
||||
echo '["@hydrooj/ui-default"]' > "$ROOT/addon.json"
|
||||
fi
|
||||
|
||||
if [ ! -f "$ROOT/config.json" ]; then
|
||||
# TODO 变成变量
|
||||
echo '{"host": "oj-mongo", "port": "27017", "name": "hydro", "username": "", "password": ""}' > "$ROOT/config.json"
|
||||
fi
|
||||
|
||||
if [ ! -f "$ROOT/first" ]; then
|
||||
echo "for marking use only!" > "$ROOT/first"
|
||||
hydrooj cli system set file.accessKey "$ACCESS_KEY"
|
||||
hydrooj cli system set file.secretKey "$SECRET_KEY"
|
||||
# TODO 变成变量
|
||||
hydrooj cli system set file.endPoint http://oj-minio:9000/
|
||||
|
||||
hydrooj cli user create systemjudge@systemjudge.local root rootroot
|
||||
hydrooj cli user setSuperAdmin 2
|
||||
fi
|
||||
|
||||
pm2-runtime start hydrooj
|
||||
@@ -0,0 +1,45 @@
|
||||
version: '3.7'
|
||||
|
||||
services:
|
||||
oj-minio:
|
||||
image: minio/minio
|
||||
container_name: oj-minio
|
||||
command: server /data
|
||||
restart: always
|
||||
volumes:
|
||||
- ./data/minio:/data
|
||||
environment:
|
||||
- MINIO_ACCESS_KEY=CHANGE_THIS
|
||||
- MINIO_SECRET_KEY=CHANGE_THIS
|
||||
|
||||
oj-mongo:
|
||||
image: mongo
|
||||
container_name: oj-mongo
|
||||
restart: always
|
||||
volumes:
|
||||
- ./data/mongo:/data/db
|
||||
|
||||
oj-backend:
|
||||
build: ./backend
|
||||
container_name: oj-backend
|
||||
restart: always
|
||||
depends_on:
|
||||
- oj-minio
|
||||
- oj-mongo
|
||||
volumes:
|
||||
- ./data/backend/config:/root/.hydro
|
||||
environment:
|
||||
- ACCESS_KEY=CHANGE_THIS
|
||||
- SECRET_KEY=CHANGE_THIS
|
||||
ports:
|
||||
- "0.0.0.0:80:8888"
|
||||
|
||||
oj-judge:
|
||||
build: ./judge
|
||||
container_name: oj-judge
|
||||
restart: always
|
||||
privileged: true
|
||||
depends_on:
|
||||
- oj-backend
|
||||
volumes:
|
||||
- ./data/judge/config:/root/.config/hydro
|
||||
@@ -0,0 +1,29 @@
|
||||
FROM node:14
|
||||
|
||||
ADD ./entrypoint.sh /root/entrypoint.sh
|
||||
ADD ./judge.yaml /root/judge.yaml
|
||||
|
||||
RUN yarn global add pm2 @hydrooj/hydrojudge && \
|
||||
wget https://s3.undefined.moe/file/executor-amd64 -O /usr/bin/sandbox && \
|
||||
chmod +x /usr/bin/sandbox
|
||||
|
||||
RUN apt-get -qq update && \
|
||||
apt-get install -y \
|
||||
gcc \
|
||||
python3 \
|
||||
g++ \
|
||||
fp-compiler \
|
||||
openjdk-8-jdk-headless \
|
||||
python \
|
||||
php7.0-cli \
|
||||
rustc \
|
||||
haskell-platform \
|
||||
libjavascriptcoregtk-4.0-bin \
|
||||
golang \
|
||||
ruby \
|
||||
mono-runtime \
|
||||
mono-mcs
|
||||
|
||||
RUN chmod +x /root/entrypoint.sh
|
||||
|
||||
ENTRYPOINT /root/entrypoint.sh
|
||||
@@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
|
||||
ROOT=/root/.config/hydro
|
||||
|
||||
mkdir -p $ROOT
|
||||
|
||||
if [ ! -f "$ROOT/judge.yaml" ]; then
|
||||
cp /root/judge.yaml $ROOT
|
||||
fi
|
||||
|
||||
pm2 start sandbox
|
||||
pm2-runtime start hydrojudge
|
||||
@@ -0,0 +1,7 @@
|
||||
hosts:
|
||||
localhost:
|
||||
type: hydro # vj4 用户请在此处填写 vj4
|
||||
server_url: http://oj-backend:8888/ # Hydro 运行的网址
|
||||
uname: root # 评测账号用户名
|
||||
password: rootroot # 评测账号密码
|
||||
detail: true # 默认为 true
|
||||
Reference in new issue
Block a user