RIGUZ Lee

使用GOCD部署一个SpringBoot应用

2017-06-26 / Programing / MicroService

如何自动部署 springboot 的应用? 首先我们要做的是把GOCD的启动用户go加入到docker组中,这样就可以免sudo来执行docker的命令了

我们现在来通过GOCD部署一个eureka的服务端。eureka用作服务发现,包含server端和client端,每个微服务是一个client注册到server上。看看需要哪些包:

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '1.5.3.RELEASE'
    compile group: 'org.springframework.cloud', name: 'spring-cloud-starter-eureka-server', version: '1.3.1.RELEASE'
}

然后我们的程序写一句话就可以了:

这样启动后就可以访问到eureka的web页面了,我们可以在application.properties中配置一些属性:

server.port=8761
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

然后来想办法把应用打包到docker中。我们新建一个Dockerfile到src/main/docker中:

然后在build.gradle中添加一个构建任务:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.2.RELEASE")
        classpath('se.transmode.gradle:gradle-docker:1.2')
    }
}
task buildDocker(type: Docker, dependsOn: build) {
    push = false
    applicationName = jar.baseName
    dockerfile = file('src/main/docker/Dockerfile')
    doFirst {
        copy {
            from jar
            into stageDir
        }
    }
}

这样当我们执行gradle build buildDocker命令的时候就会把springboot应用打包成docker镜像了。