首先安装 Docker 和 Docker compose。
默认情况下,如.env.default
文件声明的,go-judge 使用 5050 端口,mysql 使用 3306 端口,minio 使用 9000 和 9001 端口。
如果需要修改环境变量,拷贝一份.env.default
文件并命名.env
,在.env
中修改:
$ cp .env.default .env
请不要修改.env.docker
和.env.default
文件。
Docker compose 会自行解析.env.default
.env.docker
.env
中声明的环境变量。
推荐在Idea
的Run/Debug Configuration
中设置从.env
文件读取环境变量。
如果修改了容器映射的端口号,还需要手动添加GO_JUDGE_URL
MYSQL_JDBC_URL
MINIO_SERVER_URL
中相应的环境变量。
如果 docker 构建镜像卡住,修改/etc/systemd/system/docker.service.d/http-proxy.conf
后重启 docker engine:
$ cat > /etc/systemd/system/docker.service.d/http-proxy.conf << EOF
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"
EOF
$ systemctl daemon-reload
$ systemctl restart docker
如果 gradle 下载依赖卡住,修改gradle.properties
,添加以下内容:
systemProp.http.proxyHost=127.0.0.1
systemProp.http.proxyPort=7890
systemProp.https.proxyHost=127.0.0.1
systemProp.https.proxyPort=7890
$ docker compose up -d sandbox mysql minio
$ docker compose up web
本地运行:
$ ./gradlew run
容器运行:
$ docker compose up app
容器编译并运行:
$ docker compose up app --build
- 拷贝
.env
文件,设置复杂的用户名和密码。 - 修改
docker-compose.yml
:- 关闭服务容器的端口转发,只留 app 和 web 两个容器的端口。
- 修改 volume 配置,持久化所有数据。
- 启动所有服务:
docker compose up -d
。