使用Jenkins构建基于Docker的SpringBoot应用

2017-11-14  本文已影响94人  黄老斜

安装Docker

参考官方文档

卸载系统自带JDK

查询出系统自带的jdk

rpm -qa | grep Java
javapackages-tools-3.4.1-11.el7.noarch
java-1.8.0-openjdk-headless-1.8.0.65-3.b17.el7.x86_64
tzdata-java-2015g-1.el7.noarch
java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64
java-1.7.0-openjdk-1.7.0.91-2.6.2.3.el7.x86_64
python-javapackages-3.4.1-11.el7.noarch
java-1.7.0-openjdk-headless-1.7.0.91-2.6.2.3.el7.x86_64

rpm -e --nodeps 删除系统自带的jdk

rpm -e --nodeps java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64
rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.65-3.b17.el7.x86_64
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.91-2.6.2.3.el7.x86_64
rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.91-2.6.2.3.el7.x86_64

安装JDK1.8

安装Jenkins

# 添加yum repos
wget -O /etc/yum.repos.d/jenkins.repo
rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
yum install jenkins

启动Jenkins

systemctl start jenkins

配置Jenkins权限

#把jenkins 用户加入docker用户组
gpasswd -a jenkins docker

Jenkins系统设置

安装Jenkins插件

配置构建应用所需的插件,如:Gradle、Maven等

配置项目

修改 build.gradle 文件

buildscript {

    repositories {
        mavenCentral()
    }

    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.6.RELEASE")
        classpath('se.transmode.gradle:gradle-docker:1.2')
    }
}

apply plugin: 'java'
apply plugin: 'groovy'
apply plugin: 'application'
apply plugin: 'docker'
apply plugin: 'org.springframework.boot'


group 'huanglaoxie'
version '1.0'
sourceCompatibility = 1.8
targetCompatibility = 1.8

[compileJava, compileTestJava]*.options*.encoding = "UTF-8"

repositories {
    mavenCentral()
}

dependencyManagement {
    imports {
        mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Dalston.SR4'
    }
}

dependencies {
    compile "org.codehaus.groovy:groovy-all:2.4.11"
    compile "org.springframework.boot:spring-boot-starter-web"
}

docker {
    baseImage "openjdk:latest"
    maintainer = 'huanglaoxie huanglaoxie@126.com'
    registry 'huanglaoxie'
    
    //设置其他镜像中心的参数
    ...
}

distDocker {
    push = false
    exposePort(8080)
    setEnvironment("SERVER_PORT", "8080")
    setEnvironment('JAVA_OPTS', '-Xms128m -Xmx512m -Djava.security.egd=file:/dev/./urandom')
    volume("/data")
}

Gradle 构建 Docker 镜像

gradle distDocker

Jenkins构建Docker应用

# 删除容器
echo `docker rm -f ${CONTAINNER_NAME}`
# 删除镜像
echo `docker rmi ${IMAGE_NAME}:${IMAGE_VERSION}`
# 构建镜像(gradle)
gradle clean disDocker
# 构建镜像
docker run -d --name ${CONTAINNER_NAME} -p ${APP_PORT}:8080 ${IMAGE_NAME}:${IMAGE_VERSION}

jenkins执行构建命令出错后就不会继续执行后续构建命令,如: 当容器不存在时,执行 docker rm -f ${CONTAINNER_NAME} 命令会报错,使用 echo docker rm -f ${CONTAINNER_NAME} 这种方式即可避免该问题

上一篇 下一篇

猜你喜欢

热点阅读