mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-19 17: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