序言:
本次项目为部署一个开源的,前后端分离的人力资源管理系统。该项目采用的是SpringBoot+Vue开发。所用的软件主要有java,vscode,git,manven,rancher,harbor,docker。由于jenkinds没有安装manven软件,我们将在自己电脑上安装这个软件,并打包成功后,使用docker制作镜像,并上传到harbor上保存镜像。在使用rancher进行容器化部署。
前期准备工作
- windonws安装git,vscode,manven
- git连接harbor
- 配置好java环境(jdk8)
- rancher上部署个MySQL
MySQL部署:
依次填写信息,点击完成即可。容器中的mysql默认是禁止远程访问的,我们需要将其远程访问开启。
登录mysql:
mysql -u root -p
use mysql;
update user set host = '%' where user = 'root';
select host, user from user;
或者:
#允许所有用户远程访问 修改用户名和密码为你自己的
mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
#允许单个ip 修改用户名和密码为你自己的
mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
#最后
mysql> FLUSH PRIVILEGES;
项目地址:https://github.com/lenve/vhr
镜像拉取
git clone https://github.com/lenve/vhr.git
vscode打开该项目
我们可以按图片进入这个文件查看,我们可以看到我们需要的后端MySQL的填写信息,我们把MySQL的地址,账号,密码依次填入。
当我们看到有pom.xml时,我们就应该意识到这个项目为manven打包的。这时候我们可以开启一个窗口,利用以下命令进行测试打包。
mvn clean package
打包成功之后,这时我们可以通过git命名将更改的项目更行到gitlab上,并用jenkinds进行自动化部署等等,但是由于jenkinds上并没有安装manven,所以我们将本地的打包文件直接通过dockerfile制作镜像。
这里我采用的是nginx部署的,并且项目打包成的是一个jar包,需要java程序执行,所以我们需要在dockerfile上写上我们需要的环境。
- 准备一个jdk-8u144-linux-x64.tar.gz 安装包,并放在同一目录下(build同级别)
- 创建一个docker的目录,并在目录下创建一个名为docker-master的文件名
dockerfile配置如下:
FROM 192.168.79.6:88/fu/nginx:lts(harbor仓库的)
COPY build /usr/share/nginx/html
EXPOSE 8082
STOPSIGNAL SIGTERM
CMD ["nginx", "-g", "daemon off;"]
#将本地文件添加到容器中,tar类型文件会自动解压
ADD jdk-8u144-linux-x64.tar.gz /usr/local/java
#设置环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_144
ENV JAVA_BIN $JAVA_HOME/bin
ENV JAVA_LIB $JAVA_HOME/lib
ENV CLASSPATH .:$JAVA_LIB/dt.jar:$JAVA_LIB/tools.jar
ENV PATH $JAVA_BIN:$PATH
docker镜像打包
登录harbor:
docker login 192.168.79.6:88 (输入用户名,密码。一般为admin Harbor12345)
镜像打包:
docker build -f docker/docker-master -t 192.168.79.6:88/vhr/Micro-personnel:1 . (“.”:为当前目录)
查看打包成功的镜像:
docker images
上传镜像到harbor:
docker push 192.168.79.6:88/vhr/Micro-personnel:1
删除本地镜像:
docker rmi 192.168.79.6:88/vhr/Micro-personnel:1