w: add docker installation (#152)

pull/156/head
zhoupb12313 3 years ago committed by GitHub
parent 715e564971
commit 7b75a961bc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -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
Loading…
Cancel
Save