扫码一下
查看教程更方便
docker 是一种容器管理服务,可简化构建和部署。对于 docker 的初学者,可以在此链接中详细了解 - https://www.jiyik.com/w/docker
在本章中,我们将了解如何使用 maven 和 gradle 依赖项为 spring boot 应用程序创建 docker 映像。
首先,在 src/main/docker 目录下创建一个名为 dockerfile
的文件,其内容如下所示。 请注意,此文件对于创建 docker 镜像很重要。
from java:8
volume /tmp
add dockerapp-0.0.1-snapshot.jar app.jar
run bash -c 'touch /app.jar'
entrypoint ["java","-djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
对于 maven,将 docker maven 插件添加到构建配置文件 pom.xml
spring-boot-tutorialspoint
com.spotify
docker-maven-plugin
1.0.0
${docker.image.prefix}/${project.artifactid}
src/main/docker
${project.build.directory}
${project.build.finalname}.jar
org.springframework.boot
spring-boot-maven-plugin
完整的 pom.xml 文件如下所示
4.0.0
com.jiyik
dockerapp
1.0-snapshot
org.springframework.boot
spring-boot-starter-parent
1.5.9.release
spring-boot-jiyik
org.springframework.boot
spring-boot-starter
de.codecentric
spring-boot-admin-server
1.5.5
de.codecentric
spring-boot-admin-server-ui
1.5.5
org.springframework.boot
spring-boot-starter-test
test
de.codecentric
spring-boot-admin-starter-client
1.5.5
org.springframework.boot
spring-boot-starter-actuator
io.springfox
springfox-swagger2
2.7.0
io.springfox
springfox-swagger-ui
2.7.0
org.springframework.boot
spring-boot-starter-web
com.spotify
docker-maven-plugin
1.0.0
${docker.image.prefix}/${project.artifactid}
src/main/docker
${project.build.directory}
${project.build.finalname}.jar
org.springframework.boot
spring-boot-maven-plugin
现在,我们可以使用 maven 命令运行应用程序
$ mvn package docker:build
要使用 gradle 构建配置构建 docker 镜像,我们需要添加 docker 插件,并且需要编写任务 builddocker 来创建 docker 镜像。
gradle docker 配置的代码如下所示。
buildscript {
.....
dependencies {
.....
classpath('se.transmode.gradle:gradle-docker:1.2')
}
}
group = 'spring-boot-tutorialspoint'
.....
apply plugin: 'docker'
task builddocker(type: docker, dependson: build) {
applicationname = jar.basename
dockerfile = file('src/main/docker/dockerfile')
dofirst {
copy {
from jar
into stagedir
}
}
}
完整的 build.gradle 文件如下所示。
buildscript {
ext {
springbootversion = '1.5.9.release'
}
repositories {
mavencentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springbootversion}")
classpath('se.transmode.gradle:gradle-docker:1.2')
}
}
group = 'spring-boot-tutorialspoint'
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'docker'
group = 'com.jiyik'
version = '0.0.1-snapshot'
sourcecompatibility = 1.8
repositories {
mavencentral()
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
testcompile('org.springframework.boot:spring-boot-starter-test')
}
task builddocker(type: docker, dependson: build) {
applicationname = jar.basename
dockerfile = file('src/main/docker/dockerfile')
dofirst {
copy {
from jar
into stagedir
}
}
}
现在,使用如下所示的命令创建一个 docker 映像
$ gradle build builddocker