Go语言 使用自定义停靠文件运行测试容器:无此图像

mefy6pfw  于 2023-03-16  发布在  Go
关注(0)|答案(1)|浏览(78)
FROM <custom-name>.artifactory.<company>.net/base/gobuilder:latest as builder
...

FROM <custom-name>.artifactory.<company>.net/base/distroless-base:<hash>
...

我对testcontainers库有一个问题,在大多数情况下,它只是运行Docker容器,所以我想答案是Docker特定的,而不是绑定到库本身。
你可以在Artifactory注册表中看到我的Dockerfile的轮廓,它使用我们公司的图像。它在CI/CD中工作得很好,但由于某些原因,它不能与这个库一起工作。

req := testcontainers.ContainerRequest{
        FromDockerfile: testcontainers.FromDockerfile{
            Context:    "/path/to/context/,
            Dockerfile: "Dockerfile",
        },
    }

    container, err := testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{
        ContainerRequest: req,
        Started:          true,
    })

这就是我在代码中创建容器的方式。
我得到的是这个错误:

Error response from daemon: no such image: 9305d9c8-1cfe-4c16-924b-3f734757d016:a6417aac-340b-4c37-a785-a45aa11f9ede: No such image: 9305d9c8-1cfe-4c16-924b-3f734757d016:a6417aac-340b-4c37-a785-a45aa11f9ede: failed to create container
--- FAIL: TestContainer

尽管如此,如果我运行docker images -a,我会看到下面列出的图像:

<custom-name>.artifactory.<company>.net/base/gobuilder   latest        0ca0c1df3fa1   3 months ago    935MB

我已经多次尝试重新启动Docker服务,但没有运气。
我还能做什么?
作为一个实验,我尝试在Go语言中使用一个公共的图像,但是得到了同样的错误,而且奇怪的是,它在返回错误时显示了一个不存在的图像散列。

cbjzeqam

cbjzeqam1#

您使用的是什么版本的Testcontainers for Go?在最新版本v0.19.0中,可以从私有注册中心的Docker文件构建,而无需传递证书,因为Docker证书助手会自动发现证书。https://golang.testcontainers.org/features/docker_auth/

req := ContainerRequest{
FromDockerfile: testcontainers.FromDockerfile{
    Context: "/path/to/build/context",
    Dockerfile: "CustomDockerfile",
    BuildArgs: map[string]*string {
        "FOO": "BAR",
    },
},

}
在以前的版本中,强制将auth凭据作为FromDockerfile结构的一部分传递。

相关问题