【发布时间】:2020-02-12 07:58:15
【问题描述】:
我已经按照官方 spring boot docker for gradle 教程进行操作,但我无法使其工作。
我的build.gradle
buildscript {
repositories {
mavenCentral()
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:2.1.6.RELEASE")
classpath('gradle.plugin.com.palantir.gradle.docker:gradle-docker:0.22.1')
}
}
group = 'springio'
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'com.palantir.docker'
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"])
}
bootJar {
baseName = 'globalstatus'
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
implementation('org.springframework.boot:spring-boot-starter-web')
testImplementation('org.springframework.boot:spring-boot-starter-test')
}
我的Dockerfile
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
gradlew build 给了我一个有效且可运行的 JAR
但是如果我做gradlew build docker 然后启动我得到的容器
Error: Invalid or corrupt jarfile /app.jar
【问题讨论】:
-
我推荐你使用 Jib github.com/GoogleContainerTools/jib
-
为什么是/app.jar 不应该是Entrypoint中的app.jar??
标签: spring-boot docker gradle