- 一、文章推荐
- 二、Spring Boot Maven和Gradle自带构建插件
- 三、maven插件-Spotify Maven Plugin
- 四、gradle插件-Palantir Gradle Plugin
- 引用
springboot官网推荐:使用docker构建springboot镜像
springboot官网推荐:使用docker构建springboot镜像(2)最佳实践
springboot官网推荐:使用docker构建springboot镜像(3)最佳实践
在上面推荐的文章中,我们都是通过调用docker命令来构建镜像的。如果我们不想在构建中直接调用docker,那么Maven和Gradle有一套丰富的插件可以帮我们完成这项工作。
二、Spring Boot Maven和Gradle自带构建插件只要有Docker环境就行,我们就可以使用Maven或者Gradle的Spring Boot构建插件来创建容器镜像。这些插件使用云原生构建包创建OCI映像(与docker build创建的格式相同),这样我们就不需要编写Dockerfile。
这些默认的构建器针对Spring Boot应用程序进行了优化,并且像《springboot官网推荐:使用docker构建springboot镜像(3)最佳实践》的例子一样,图像被有效地分层。
比如,我们可以在不修改pom.xml
或者build.gradle
的情况下,进项镜像构建。
Maven:
./mvnw spring-boot:build-image -Dspring-boot.build-image.imageName=myorg/myapp
maven方式官网地址:https://docs.spring.io/spring-boot/docs/current/maven-plugin/reference/htmlsingle/#build-image
Gradle
./gradlew bootBuildImage --imageName=myorg/myapp
gradle方式官网地址:https://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/htmlsingle/#build-image
以上两种方式第一次构建可能需要很长时间,因为它必须下载一些容器镜像和JDK,但后续构建应该很快。
除了上面maven和gradle自带的构建方式,还有其他的权限。
三、maven插件-Spotify Maven PluginSpotify Maven是一个流行插件。这个插件需要我们编写dockerfile,然后为我们运行docker。
dockerfile
FROM openjdk:8-jdk-alpine as build
WORKDIR /workspace/app
COPY mvnw .
COPY .mvn .mvn
RUN ./mvnw -v
COPY pom.xml .
COPY src src
RUN ./mvnw install -DskipTests
RUN mkdir -p target/dependency && (cd target/dependency; jar -xf ../*.jar)
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG DEPENDENCY=/workspace/app/target/dependency
COPY --from=build ${DEPENDENCY}/BOOT-INF/lib /app/lib
COPY --from=build ${DEPENDENCY}/META-INF /app/META-INF
COPY --from=build ${DEPENDENCY}/BOOT-INF/classes /app
ENTRYPOINT ["java","-cp","app:app/lib/*","hello.Application"]
构建镜像:
mvn com.spotify:dockerfile-maven-plugin:build
但是此时,我们建立了一个匿名的docker形象。
我们可以通过命令行或者修改pom的方式设置镜像名称和tag
命令行方式:
#tag 默认为laster
mvn com.spotify:dockerfile-maven-plugin:build -Ddockerfile.repository=myorg/myapp
# tag=1.0
mvn com.spotify:dockerfile-maven-plugin:build -Ddockerfile.repository=myorg/myapp -Ddockerfile.tag=1.0
修改pom的方式:
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.8</version>
<configuration>
<repository>myorg/${project.artifactId}</repository>
<tag>${project.version}</tag>
</configuration>
</plugin>
</plugins>
</build>
四、gradle插件-Palantir Gradle Plugin
Palantir Gradle插件需要配合Dockerfile一起工作。如果需要还可以为您生成Dockerfile。
首先修改build.gradle
,引入插件,
buildscript {
...
dependencies {
...
classpath('gradle.plugin.com.palantir.gradle.docker:gradle-docker:0.13.0')
}
}
然后应用插件并调用其任务
apply plugin: 'com.palantir.docker'
group = 'myorg'
bootJar {
baseName = 'myapp'
version = '0.1.0'
}
task unpack(type: Copy) {
dependsOn bootJar
from(zipTree(tasks.bootJar.outputs.files.singleFile))
into("build/dependency")
}
docker {
name "${project.group}/${bootJar.baseName}"
copySpec.from(tasks.unpack.outputs).into("dependency")
buildArgs(['DEPENDENCY': "dependency"])
}
构建镜像:
./gradlew clean build docker -x test
引用
Spotify Maven Plugin
The Palantir Gradle Plugin
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)