Springboot【2.x】+ Gradle远程部署到Linu

2019-10-14  本文已影响0人  山姆极客

序言

缘由已在上章节讲述,本章就直接进入主题--基于springboot+Gradle项目远程部署到docker,希望能给大伙儿有些帮助。

系统及软件环境

Docker RemoteApi

远程部署前提需要开启docker远程访问功能,下面介绍常用两个操作系统的配置

DOCKER_OPTS="-H=unix:///var/run/docker.sock -H=0.0.0.0:2375"
ExecStart=/usr/bin/dockerd  -H tcp://0.0.0.0:2375  -H unix:///var/run/docker.sock

<span style="margin-left: 40px">效果截图</span>

dockerConfig

<span style="margin-left: 40px">�重启服务�</span>

  systemctl daemon-reload    
  systemctl restart docker.service 
dockerInfo

项目创建与访问

打开intelliJ -> New Project -> Spring Assistant(Spring Initializr Server) -> 选择gradle -> 工程名(gdhello) -> 点击完成,项目结构如下

gradleProject

在src/main/kotlin 相应目录下新建HelloController

@RestController
class HelloController {
    @GetMapping("hello")
    fun helloWorld() = "hello world"
}

在src/main/resource的application.properties里面添加自定义端口号

server.port=8889

启动项目,浏览器访问

~$ ./gradlew bootRun
bootBrower

配置DockerFile

确保项目能正常访问后,在src/main/docker文件夹下面,新建dockerfile

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD gdhello-0.0.1.jar app.jar
# -Djava.security.egd=file:/dev/./urandom 可解决tomcat可能启动慢的问题
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
EXPOSE 8889

配置Gradle中docker依赖

用intellij自动生成的gradle项目已经是5.6.x版本并且将原来的build.gradle替换成了build.gradle.kts(DSL脚本语言,如果不熟悉的童鞋,在文章末尾文献参考中有官方的学习资料,山姆本人对于DSL的认识也仅限于文档的部分内容),打开build.gradle.kts添加docker-remote-api插件

plugins {
    id("com.bmuschko.docker-remote-api") version "5.2.0"
}

docker {
    // 远程docker服务器地址(如果不设置,默认本地2375端口)
    url.set("tcp://192.168.80.200:2375")
}

到此,docker-remote-api最简单的配置已经完毕,但还不能像maven一样直接远程部署,还需要进行task任务的项目打包和docker远程部署

val copyJarToDocker by tasks.creating(Copy::class) {
    dependsOn(tasks.bootJar)
    from("build/libs")
    into("src/main/docker")
    include("${project.name}-${project.version}.jar")
}

val buildGradleDockerImage by tasks.creating(DockerBuildImage::class) {
    dependsOn(copyJarToDocker)
    inputDir.set(file("src/main/docker"))
    tags.add("${project.name}:0.0.1")
}

保存后,执行以下命令

~$ ./gradlew buildGradleDockerImage
dockerSuccess

看到执行成功后,远程登录80.200的服务,看下docker镜像

dockerImages

小思考

欢迎有兴趣的童鞋跟山姆留言,大家一起讨论,一起学习,一起进步_

文献参考

【demo地址】(https://github.com/lenvonsam/mvhello.git)
【docker官网】(https://docs.docker.com)
【docker介绍】(https://www.cnblogs.com/boshen-hzb/p/6400272.html)
【kotlin介绍】(https://www.runoob.com/kotlin/kotlin-tutorial.html)
【gradle(DSL)】(https://docs.gradle.org/current/dsl/)
【gradle-docker-plugin文档】(https://bmuschko.github.io/gradle-docker-plugin/)

上一篇 下一篇

猜你喜欢

热点阅读