今天继续来搞一个可持续构建工具。我们选择Docker+Jenkins+GitHub的方案。
github 作为代码仓库
Jenkins 负责拉取代码,构建并打包镜像
docker 作为运行环境
整体流程如图,开发者提交代码至git,Jenkins 拉取代码,编译构建之后push到docker镜像仓库,由docker拉取后部署swarm或者k8s集群运行。在windows本地环境下,我们节省一步构建成docker镜像后直接运行。
一、docker 环境搭建。
我选择的docker for windows
这里有两个注意点:
- 1.windows 版本不能是家庭版,最好是企业版
- 2.开启支持VT-X/AMD-v功能,即开启虚拟化技术,需要重启电脑,去BIOS里开启该功能
先去官网下载安装:docs.docker.com/docker-for-… 安装完成后,进入设置, 选择Docker Engine,在Registry mirrors输入你的加速地址,这样可以提高拉取镜像的速度。
启动docker,右下角任务栏会有一个docker图标,并提示Docker Desktop is running
说明docker已经成功运行,接下来我们打开PowerShell 验证一下
输入docker -v
查看docker 版本
能够识别docker命令,并返回版本号,说明我们的安装成功了。
二、利用docker 安装Jenkins,并进行配置
1.使用ps(PowerShell) 输入docker pull jenkinsci/blueocean
来拉取最新的Jenkins。
2.使用docker run
命令启动Jenkins:
docker run -u root --rm -d -p 8080:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean
使用docker ps
查看容器运行状态。可以看到Jenkins容器已经启动
第一次访问新的Jenkins实例时,系统会要求使用自动生成的密码对其进行解锁。
浏览到 http://localhost:8080(或安装时为Jenkins配置的任何端口),并等待 解锁 Jenkins 页面出现。
我们使用docker exec
命令进入容器内部 定位到初始化密码所在目录
docker exec -it 78d97ad56a48 bash
cd /var/jenkins_home/secrets/
cat initialAdminPassword
从Jenkins控制台日志输出中,复制自动生成的字母数字密码 并将其拷贝到Jenkins页面中,点击继续完成安装。
4.安装完成后进入首页 然后需要自行配置插件以及maven、docker环境。
三、创建一个简单的springboot应用
通过idea自带的Spring Initializr 快速创建一个spring boot 应用 创建一个TestController 并添加一段测试代码:
/**
* @author 59780
*/
@RestController
public class TestController {
@GetMapping("helloword")
public String helloword(){
return "this is a docker demo";
}
}
接下来编写 dockerfile
文件
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER qiang <597807906@qq.com>
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD demo.jar app.jar
# 运行jar包
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
pom文件中添加docker-maven-plugin
插件 用于构建docker镜像。
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.11</version>
<configuration>
<imageName>jack/demo</imageName>
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
然后我们把项目提交到github上,等会配置Jenkins时要用到
项目地址:https://github.com/jasonbourn/docker-test.git
四、利用Jenkins 构建和启动应用
1.构建一个maven 项目
2.在源码管理
填入项目地址,配置好用户名和密码,这样就可以从git上拉取代码
clean package docker:build
4.在post steps中添加shell命令:
docker run -itd --name docker_demo -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker jack/demo:latest
5.保存并执行构建。
从控制台输出的日志我们可以看到,镜像打包成功并启动:
我们来到docker for windows
客户端可以看到docker_demo成功运行
打开浏览器输入:http://localhost:9000/helloword
可以发现项目成功运行并可以访问
大功告成!