准备环境

本次先假定jenkins与要发布的服务器在同一台,实际生产环境中,有可能测试环境和生产环境分别部署有jenkins,也有可能一台jenkins用于多套环境、多台服务器的发布,这次先专注于docker的部署,jenkins不需要跨网络操作

自制JDK镜像

先自制一个jdk镜像,上传到自己的阿里云(阿里云免费提供镜像仓库服务),后面基于这个镜像构建自己的应用

新建目录/home/dockerfile,新建Dockerfile文件,并将JDK的压缩包拷贝到该目录下:

docker jenkins 安装node jenkins dockerfile_jenkins


编写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 jenkins 安装node jenkins dockerfile_jenkins_02


查看镜像列表:docker images

docker jenkins 安装node jenkins dockerfile_spring_03


新建镜像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 jenkins 安装node jenkins dockerfile_jar_04


推送到阿里云镜像仓库:

docker push registry.cn-shanghai.aliyuncs.com/yiyuankafei-jdk/jdk:8

docker jenkins 安装node jenkins dockerfile_jar_05

可以到镜像控制台看一下是否推送成功(这步忘了截图,下图的仓库和版本后来切换过)

docker jenkins 安装node jenkins dockerfile_jenkins_06

新建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新建项目

docker jenkins 安装node jenkins dockerfile_spring_07

配置参数

docker jenkins 安装node jenkins dockerfile_jar_08


docker jenkins 安装node jenkins dockerfile_spring_09

配置源码地址

docker jenkins 安装node jenkins dockerfile_jenkins_10

构建前操作

docker jenkins 安装node jenkins dockerfile_spring_11

构建后执行shell

docker jenkins 安装node jenkins dockerfile_jenkins_12

mvn package docker:build

docker  run  -d  -i  --name=testDockerJenkins  -p 9099:9099  registry.cn-shanghai.aliyuncs.com/yiyuankafei/test-docker-jenkins:latest

构建项目

docker jenkins 安装node jenkins dockerfile_jenkins_13

查看镜像和容器

可以看到容器已经运行起来了(后来切换了阿里云镜像仓库,所以shanghai改成了hangzhou,这个不影响流程,关注主要步骤即可)

docker jenkins 安装node jenkins dockerfile_spring_14

测试一下接口:

docker jenkins 安装node jenkins dockerfile_spring_15