【问题标题】:Overwite entire default Dockerfile generated by bmuschko Gradle Docker plugin覆盖由 bmuschko Gradle Docker 插件生成的整个默认 Dockerfile
【发布时间】:2020-02-24 09:35:07
【问题描述】:

我试图在我的 Gradle 脚本中覆盖整个 bmuschko 生成的 Dockerfile。但是,我似乎能做的只是附加到它的底部。我有一个我想使用的自定义 Dockerfile,但使用插件 (com.bmuschko.docker-spring-boot-application:6.1.2) 会覆盖它。我已经尝试添加一个新的入口点、指令和指令FromTemplate,但所有这些都是将它们附加到生成文件的底部:

https://bmuschko.github.io/gradle-docker-plugin/api/com/bmuschko/gradle/docker/tasks/image/Dockerfile.html

tasks.withType<Dockerfile> {
    instructionsFromTemplate("src/main/resources/Dockerfile")
    entryPoint("top", "-b")
    instruction("FROM azul/zulu-openjdk-centos:latest")
}

也试过了:

tasks.withType<DockerBuildImage> {
    dockerFile.set(File("src/main/resources/Dockerfile"))
}

gw dockerBuildImage 说它实际上是在使用我的 Dockerfile,但随后抛出错误:

Using Dockerfile '/Users/meanwhileinhell/my-app/src/main/resources/Dockerfile'
Using images 'com.meanwhileinhell.app/meanwhileinhell-server:1.0.0-snapshot'.

Error during callback
com.github.dockerjava.api.exception.InternalServerErrorException: Cannot locate specified Dockerfile: /Users/meanwhileinhell/my-app/src/main/resources/Dockerfile
        at com.github.dockerjava.jaxrs.filter.ResponseStatusExceptionFilter.filter(ResponseStatusExceptionFilter.java:59)
        at com.bmuschko.gradle.docker.shaded.org.glassfish.jersey.client.ClientFilteringStages$ResponseFilterStage.apply(ClientFilteringStages.java:133)
        at com.bmuschko.gradle.docker.shaded.org.glassfish.jersey.client.ClientFilteringStages$ResponseFilterStage.apply(ClientFilteringStages.java:121)
        at com.bmuschko.gradle.docker.shaded.org.glassfish.jersey.process.internal.Stages.process(Stages.java:171)
        at com.bmuschko.gradle.docker.shaded.org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:283)
        at com.bmuschko.gradle.docker.shaded.org.glassfish.jersey.client.JerseyInvocation.lambda$invoke$1(JerseyInvocation.java:767)
        at com.bmuschko.gradle.docker.shaded.org.glassfish.jersey.internal.Errors.process(Errors.java:316)
        at com.bmuschko.gradle.docker.shaded.org.glassfish.jersey.internal.Errors.process(Errors.java:298)
        at com.bmuschko.gradle.docker.shaded.org.glassfish.jersey.internal.Errors.process(Errors.java:229)
        at com.bmuschko.gradle.docker.shaded.org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:414)
        at com.bmuschko.gradle.docker.shaded.org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:765)
        at com.bmuschko.gradle.docker.shaded.org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:456)
        at com.bmuschko.gradle.docker.shaded.org.glassfish.jersey.client.JerseyInvocation$Builder.post(JerseyInvocation.java:357)
        at com.github.dockerjava.jaxrs.async.POSTCallbackNotifier.response(POSTCallbackNotifier.java:29)
        at com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier.call(AbstractCallbackNotifier.java:50)
        at com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier.call(AbstractCallbackNotifier.java:24)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)

它说它找不到的Dockerfile,正是它说它找不到它的位置。

如何完全覆盖这个文件?

【问题讨论】:

标签: docker gradle gradle-plugin gradle-kotlin-dsl


【解决方案1】:

尝试使用

tasks.withType<DockerBuildImage> {
    inputDir.set(file("src/main/resources/"))
}

【讨论】:

    【解决方案2】:

    我做了以下事情:

    dockerCreateDockerfile.doLast { 
        copy {
            from 'docker/Dockerfile'
            into dockerSyncBuildContext.destinationDir
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-22
      • 1970-01-01
      • 2021-03-18
      • 1970-01-01
      • 2016-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多