0
点赞
收藏
分享

微信扫一扫

「学习笔记」docker部署开源hustoj

云朵里的佛光 2022-02-06 阅读 68

目录

一.相关学习

了解容器技术发展、特点,搭建容器环境并部署应用:
  1、阅读Docker官方文档,了解特性和基本概念
  2、搭建Dcoker环境,掌握Dcoker常用命令
  3、安装Dcoker-compose,理解作用,掌握语法
  4、利用docker-compose进行应用编排,自行选择应用进行部署

二.部署过程

1.阅读Docker官方文档,了解特性和基本概念

  打开浏览器,输入https://docs.docker.com/,进入docs官方文档,可以查看到很多关于docker的信息,在这里,我们可以知道如何docker如何安装,docker是什么,最近的更新等等。
docker docs

2.搭建Dcoker环境,掌握Dcoker常用命令

  通过网络上广泛的学习,了解到Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。Docker可以让开发者打包应用程序以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。它与传统虚拟机技术的区别是:传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。下附图就能看出来:
docker和virtual machines的区别

在这里插入图片描述
  下面我们就根据这个文档对docker进行安装和部署:首先更新一下软件列表,先设置下软件源,为国内阿里云,然后开始下载docker引擎:
更新软件列表
下载docker引擎
  然后启动docker查看版本,可以看到版本是最新的:
启动docker查看版本
  然后开始测试,输入命令:docker run hello-world,这个步骤在下面可以清晰的看出:
在这里插入图片描述
  执行流程如下:
执行流程
  这里呢,我们的docker就安装完成了,下面通过命令:docker images查看运行启动的容器。
在这里插入图片描述

3.安装Dcoker-compose,理解作用,掌握语法

  Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

  通过在终端输入:docker-compose --help,可以查看到很多相关的命令:
docker-compose 常用命令

  下面,我们就尝试安装docker-compose:
安装docker-compose

4.利用docker-compose进行应用编排,对hustoj进行部署

  下面我们通过docker-compose来部署和运行hustoj,hustoj是一个开源oj系统,在gethub上可以查到这个项目:
在这里插入图片描述
  Docker-compose的难点在于yml文件的编写,我们在github上可以看到基于docker的安装:
在这里插入图片描述
  点击之后,我们可以找到基于docker安装的分布式:
在这里插入图片描述
  我们可以根据这个来写我们的docker-compose的yml文件,通过图中不难得知,部署hustoj需要mysql服务和web服务,对于判题系统judge的话,已经集成所以我们不用处理,这样我们就可以得到初步编写的yml文件了:
yml文件的编写
  这个写完之后,我们就可以尝试提起我们的hustoj了,通过一条命令:docker-compose build,然后发现了报错:
build后报错
  通过报错信息得知,是版本号的原因,可能这个不支持3.0版本,那我们就改为2.0版本。
在这里插入图片描述
  再次尝试build,我们发现db和web使用的image skipping,这是因为linux文件系统为联合文件系统,所以下载过后不会再重复下,我们发现,好像没有什么问题:
mysql 部署成功
web端部署完毕
  开始创建:
在这里插入图片描述
  启动完成之后,我们可以通过命令:docker ps查看正在运行的容器,但是我们发现,mysql的状态是restarting,在一直重启,为了查明原因,我们尝试查看日志:
查看正在运行的容器
  输入docker logs [容器id],可以查看到,是我们yml文件配置中缺少语句。
查看日志
  于是我们尝试添加这条语句,赋值为root:
在这里插入图片描述
  修改完之后,我们先down一下,输入以下命令:docker-compose down,然后再启动,输入命令:docker-compose up -d,-d是后台运行,然后我们再次查询,看到mysql容器状态正常:
在这里插入图片描述
  这个时候,我们就可以在浏览器输入网址,打开,开始注册,发现注册后,登陆不成功,意识到还是数据库的原因,于是就开始自己手动导入数据库和表:
注册
注册成功依然登陆失败
  尝试手动加数据,在github上找到sql表文件的目录,找到并复制到我们的ubuntu的根目录下,修改名称我们自己设置的judge。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
复制在根目录下
  在我们ubuntu终端下载一个mysql-client,手动将这个表导入到里面:
下载mysql-client
创建一个数据库为judge
  然后将db.sql文件拷贝到我们mysql容器根目录下,使用命令:cp db.sql [容器id]😕 ,然后进入,使用命令:docker exec -it [容器id] /bin/bash:
在这里插入图片描述
  开始导入使用source命令:
在这里插入图片描述
  导入成功之后,查看表单,可以看到以下内容,其中users是用户表,privilege是管理员表:导入成功之后,查看表单,可以看到以下内容,其中users是用户表,privilege是管理员表:
在这里插入图片描述
  我们在浏览器创建用户,用户名为admin,密码为admin123,之后去终端查询,发现可以查到这条记录:
在这里插入图片描述
  发现创建的是一个普通用户,要添加管理员权限的话,需要在privilege表下添加数据:
在这里插入图片描述
在这里插入图片描述
  这样我们的管理员就添加成功了,我们可以在浏览器端看到:
在这里插入图片描述
  我们点击进入进行管理,尝试添加一些acm试题,先在官网查询到免费题库地址,然后我们手动下载到我们的根目录:
进入管理界面
在这里插入图片描述
在这里插入图片描述
开始手动下载
在这里插入图片描述
开始导入
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  然后发现导入失败,原因是文件太大,我们要修改下php上传文件的大小限制。于是我们在终端开始搜索这个文件:
尝试查找并修改php.ini文件
  vim编译器下载后,开始对php.ini文件进行编辑:
容量显然太小了
在这里插入图片描述
编辑并重启服务
  这个时候我们再此添加题目,发现可以添加了,然后去题库可以查询到这几道题目,也可以查到题目来源、描述、输入输出等等。
添加题目成功
在这里插入图片描述
在这里插入图片描述
  至此,关于使用docker-compose部署hustoj的步骤就基本结束了,希望对读者有些启发。

举报

相关推荐

0 条评论