windows下利用Docker+Jenkins+GitHub搭建可持续化构建环境

2,255 阅读4分钟

今天继续来搞一个可持续构建工具。我们选择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容器已经启动

3.解锁 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上拉取代码

3.编写maven构建命令,这个命令会构建应用jar包,并根据dockerfile构建成docker镜像。

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 可以发现项目成功运行并可以访问

大功告成!