美文网首页
使用Jenkins构建基于Docker的SpringBoot应用

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

作者: 黄老斜 | 来源:发表于2017-11-14 17:38 被阅读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

  • 创建java文件夹

    cd /usr/local
    mkdir java
    
  • 下载JDK

    下载到本地,rz命令传送到服务器java目录

  • 解压

    tar -zxvf jdk-8u152-linux-x64.tar.gz
    
  • 设置环境变量

    vim /etc/profile
    #在文件末尾添加环境变量
    export JAVA_HOME=/usr/local/java/jdk1.8.0_152
    export CLASSPATH=.:$HAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$PATH:$JAVA_HOME/bin
    
    #按ESC退出编辑,按住shift 连续按两次Z保存(shift+zz)
    
    #应用更改
    source /etc/profile
    
    

安装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} 这种方式即可避免该问题

相关文章

网友评论

      本文标题:使用Jenkins构建基于Docker的SpringBoot应用

      本文链接:https://www.haomeiwen.com/subject/ikmfvxtx.html