准备环境
本次先假定jenkins与要发布的服务器在同一台,实际生产环境中,有可能测试环境和生产环境分别部署有jenkins,也有可能一台jenkins用于多套环境、多台服务器的发布,这次先专注于docker的部署,jenkins不需要跨网络操作
自制JDK镜像
先自制一个jdk镜像,上传到自己的阿里云(阿里云免费提供镜像仓库服务),后面基于这个镜像构建自己的应用
新建目录/home/dockerfile,新建Dockerfile文件,并将JDK的压缩包拷贝到该目录下:
编写Dockerfile:
FROM centos:7
MAINTAINER yiyuankafei
ADD jdk-8u11-linux-x64.tar.gz /usr/local/
ENV JAVA_HOME /usr/local/jdk1.8.0_11
ENV PATH $PATH:$JAVA_HOME/bin
构建镜像:
docker build -t yiyuankafei-jdk:8 .
不要漏掉最后的点“.”
查看镜像列表:docker images
新建镜像tag,镜像ID为刚才构建的镜像ID
docker tag [镜像ID] registry.cn-shanghai.aliyuncs.com/yiyuankafei-jdk/jdk:8登录阿里云镜像仓库:
docker login --username=byf124633367 registry.cn-shanghai.aliyuncs.com
推送到阿里云镜像仓库:
docker push registry.cn-shanghai.aliyuncs.com/yiyuankafei-jdk/jdk:8
可以到镜像控制台看一下是否推送成功(这步忘了截图,下图的仓库和版本后来切换过)
新建springboot项目DEMO
新建spring-boot项目,提供一个任意的测试接口,具体流程跳过
使用maven插件来构建镜像,在pom中添加如下配置
这段配置的作用类似于通过dockerfile构建镜像,比如<baseImage>类似dockerfile的FROM
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>registry.cn-shanghai.aliyuncs.com/yiyuankafei/test-docker-jenkins:latest</imageName>
<baseImage>registry.cn-shanghai.aliyuncs.com/yiyuankafei-jdk/jdk:8</baseImage>
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<comPress>true</comPress>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
测试接口:
@RestController
@RequestMapping("/test")
public class TestController {
@RequestMapping("/t1")
public String test1(String name) {
System.out.println("test1");
return "test1: " + name;
}
}
jenkins新建项目
配置参数
配置源码地址
构建前操作
构建后执行shell
mvn package docker:build
docker run -d -i --name=testDockerJenkins -p 9099:9099 registry.cn-shanghai.aliyuncs.com/yiyuankafei/test-docker-jenkins:latest
构建项目
查看镜像和容器
可以看到容器已经运行起来了(后来切换了阿里云镜像仓库,所以shanghai改成了hangzhou,这个不影响流程,关注主要步骤即可)
测试一下接口: