实战Spring Boot应用的自动化构建和部署(上)

现如今SpringBoot、Jenkins、Docker这些技术已经非常流行,SpringBoot提高了JavaEE应用的开发效率,Jenkins实现了项目的持续集成,Docker使应用的部署变得灵活。本系列文章将通过这些技术实现SpringBoot的自动化构建和部署。具体流程模拟工作中常见的场景,将代码提交至SVN,去Jenkins(部署于公司内网以访问公司的SVN服务器)触发构建项目,Jenkins拉取SVN的代码构建成Docker镜像并将镜像推送至harbor镜像仓库(部署于外网以被线上应用服务器进行镜像拉取),最后Jenkins再远程调用线上应用服务器的shell命令,使应用服务器拉取刚构建好的镜像进行部署。整个过程人工参与的部分仅有代码提交和点击Jenkins构建按钮(甚至可以让Jenkins自动检测SVN代码提交自动触发构建)。本文先介绍Docker服务、Harbor镜像仓库和Jenkins服务的部署。

一、 部署docker环境

要运行Docker容器需要先部署docker,我们使用免费的Docker CE(社区版)。这里根据需要在1到2台服务器(或虚拟机)上部署Docker,如果只是用于学习测试,可以将所有服务部署在一台服务器或虚拟机上,如果是生产环境,通常需要在Jenkins服务器和应用服务器都部署Docker服务。

有能力的建议直接看官方文档并跳过本节
https://docs.docker.com/install/linux/docker-ce/centos/

我使用的是操作系统是CentOS,对于CentOS系统,Docker官方要求使用CentOS 7.x的版本。

1. 配置yum仓库

$ sudo yum install -y yum-utils \
    device-mapper-persistent-data \
    lvm2
  
$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

如果在下一步下载速度不佳,可以考虑使用阿里的Docker CE 镜像源来节约时间:

$ sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2. 安装Docker

$ sudo yum -y install docker-ce docker-ce-cli containerd.io

3. 启动Docker

$ sudo systemctl start docker

4. 验证Docker

$ sudo docker run hello-world

看到以下输出,证明刚安装的Docker可以正确地拉取镜像并运行容器了。

Hello from Docker!

二、 部署Jenkins

Jenkins支持Linux包管理器安装(如yum)、war包部署和Docker容器部署。我选择使用Jenkins的官方Docker镜像部署Jenkins,不过为了在官方镜像的基础上多做两件事情,这里需要写一个Dockerfile重新打包Jenkins镜像。这里需要保证部署Jenkins的服务器上已经安装了Docker服务。

1. 编写Dockerfile

vim Dockerfile
#使用Jenkins官方镜像作为基础镜像
FROM jenkins/jenkins:lts
#将账户改为root
USER root
#安装jenkins调用容器外部docker命令时需要的依赖
RUN apt update && apt install -y libltdl-dev

2. 打包镜像

sudo docker build -t myimg/jenkins .

3. 启动Jenkins容器

run -d -p 8080:8080 -v /var/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker --name jenkins-container03 mkimg/jenkins

这里将Jenkins的主目录挂载到宿主机,并挂载Docker相关路径以供Jenkins调用宿主机的Docker。访问ip:8080,看到Jenkins的登录页面证明Jenkins的部署已经成功。Jenkins的配置和使用会放到下一篇文章。

三、 部署Harbor

Docker官方提供了公共仓库Docker hub,但是企业不希望公开的应用需要通过搭建私有镜像仓库来存放,Docker官方提供的registry私有仓库缺少UI界面需要额外安装,我们更愿意选择流行的Harbor来作为私有镜像仓库,它提供了易用的UI界面和管理功能。有能力的可以参照官方文档完成部署。https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md

1. 安装Docker Compose

Harbor使用Docker Compose进行部署,所以需要先安装Docker Compose。可以参照GitHub https://github.com/docker/compose/releases

curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

验证

docker-compose --version

2. 下载harbor联网安装版,参照https://github.com/goharbor/harbor/releases

wget https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-online-installer-v1.7.4.tgz
tar -zxvf harbor-online-installer-v1.7.4.tgz

进入解压后的目录

cd harbor/

修改配置文件harbor.cfg的主机配置为实际的IP或域名

hostname = myhost

执行安装脚本

./install.sh

在浏览器中打开刚才设置的hostname,harbor后台默认使用80端口,看到登陆界面的话即为安装成功。

四、总结

至此实现自动化构建和部署所需的服务环境已经搭建完毕,下片文章将介绍具体的配置和使用,将整个流程打通。

posted @ 2019-04-14 14:00  晴空醒  阅读(1865)  评论(0编辑  收藏  举报