HelloWood

Docker 构建 SpringBoot 应用

2018-04-08

用 Docker 构建 SpringBoot 应用

  • 启动 Docker,并生成 SpringBoot 应用

  • 修改 build.gradle 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
buildscript {
ext {
springBootVersion = '2.0.0.RELEASE'
}
repositories {
maven { url "https://plugins.gradle.org/m2/" }
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
classpath("gradle.plugin.com.palantir.gradle.docker:gradle-docker:0.19.2")
}
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'com.palantir.docker'

group = 'cn.com.hellowood'
sourceCompatibility = 1.8
version = '1.0.0-SNAPSHOT'

repositories {
mavenCentral()
}

dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
testCompile('org.springframework.boot:spring-boot-starter-test')
}

docker {
name "${project.group}/${jar.baseName}"
files jar.archivePath
buildArgs(['JAR_FILE': "${jar.archiveName}"])
}

  • 添加 Dockerfile文件
1
2
3
4
5
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
ADD ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
  • 构建
1
gradle build docker

此时会生成Docker镜像

1
2
3
4
$ docker image ls 
REPOSITORY TAG IMAGE ID CREATED SIZE
cn.com.hellowood/docker latest 94eefe321973 4 minutes ago 118MB

  • 运行
1
docker run --name docker -p 8080:8080 cn.com.hellowood/docker 

此时可以在控制台看到应用的启动日志,项目启动之后可以访问http://localhost:8080,和本地启动应用访问一致