GenericContainer我正在尝试以编程方式从托管在私有 AWS ECR 存储库中的 docker 映像创建并启动 Testcontainers 。这将用于自动化集成测试,将在本地和 CICD 管道内运行。我知道我需要进行身份验证才能下载映像,但我不清楚如何最好地从 AWS 获取身份验证信息并将其传递到 Testcontainers 上下文。我已阅读 Testcontainers 文档,但尚未找到有关如何对私有 docker 容器存储库进行身份验证的详细信息。
到目前为止我的代码是:
import org.testcontainers.containers.GenericContainer
import org.testcontainers.utility.DockerImageName
const val imageName = "<account>.dkr.ecr.<region>.amazonaws.com/<imageName>:<version>"
val testContainer = GenericContainer(DockerImageName.parse(imageName))
testContainer.start()
Run Code Online (Sandbox Code Playgroud)
当然,这会产生错误:
at org.testcontainers.shaded.com.github.dockerjava.core.DefaultInvocationBuilder.execute(DefaultInvocationBuilder.java:247)
at org.testcontainers.shaded.com.github.dockerjava.core.DefaultInvocationBuilder.lambda$executeAndStream$1(DefaultInvocationBuilder.java:269)
at java.base/java.lang.Thread.run(Thread.java:833)
com.github.dockerjava.api.exception.InternalServerErrorException: Status 500: {"message":"Head \"https://<account>.dkr.ecr.<region>.amazonaws.com/v2/<imageName>/manifests/<version>\": no basic auth credentials"}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我发现 Testcontainers 对于所有事情来说都很直观,但这个问题让我难住了。如何将 Testcontainers 与私有 AWS ECR 存储库结合使用?