如何使用Groovy Docker-Client(De.gesellix)构建Docker Image?

问题描述 投票:0回答:1
似乎没有任何文档(对于Groovy)。在下面的示例中,我可以列出图像并获取ping,但是我似乎无法构建一个docker容器。

de.gesellix.docker-client

这结果in

#!/usr/bin/env groovy
@Grapes(
    [
        @Grab(group='de.gesellix', module='docker-client', version='2025-01-19T00-00-00'),
        @Grab(group='commons-io', module='commons-io', version='2.18.0'),
    ]
)
import de.gesellix.docker.remote.api.BuildInfo
import de.gesellix.docker.remote.api.core.StreamCallback
import org.apache.commons.io.IOUtils
import de.gesellix.docker.client.DockerClientImpl
import java.nio.charset.StandardCharsets

void buildTestContainer() {

    def dockerBuildStr = """FROM ubuntu:25.04\n
    RUN env DEBIAN_FRONTEND=noninteractive apt update && apt install -y curl python3-pyqt6 libmpv-dev python3-pycodestyle xvfb
    RUN curl -LsSf https://astral.sh/uv/install.sh | env XDG_BIN_HOME=/bin sh
    """.stripIndent()
    def buildFileStream = IOUtils.toInputStream(dockerBuildStr, StandardCharsets.UTF_8);

    dockerClient = new DockerClientImpl()
    println(dockerClient.images())
    println(dockerClient.ping().content)
    dockerClient.build(new StreamCallback<BuildInfo>() {
        @Override
        void onNext(BuildInfo buildInfo) {
            println(buildInfo)
        }
    },
        java.time.Duration.ofDays(1),
        buildFileStream
    )
}

buildTestContainer()

使用此API构建容器的正确方法是什么?

该库直接映射到Docker Engine API,并且API需要一个焦油文件,其中包含需要构建的内容的内容。我能够使用以下内容在内存中构建焦油文件,其中包含一个dockerfile(必须先将其写入临时文件)并构建了docker image。

...(a bunch of image names, omitted)... OK Caught: {"message":"unexpected EOF"} {"message":"unexpected EOF"} at de.gesellix.docker.remote.api.client.ImageApi.imageBuild(ImageApi.kt:277) at de.gesellix.docker.remote.api.client.ImageApi$imageBuild$0.call(Unknown Source)

java docker groovy
1个回答
0
投票

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.