首页 > 解决方案 > 使用单个 docker-compose 文件从自定义管道任务连接到 2 个 ACR

问题描述

我正在使用 Typescript 更新自定义 Azure 管道任务。原始任务从单个 ACR 中提取图像,现在我想从另一个 ACR 中提取图像。

我首先在 ACR 前面创建一个用于身份验证的令牌:

registryAuthenticationToken = new ACRAuthenticationTokenProvider(tl.getInput("azureSubscriptionEndpoint"), tl.getInput("azureContainerRegistry")).getAuthenticationToken();

之后,我通过调用此类的 open 方法打开与 ACR 的连接(此处的 hostEndpoint 为空):

export default class DockerComposeConnection extends ContainerConnection 
{
    ...
    public open(hostEndpoint?: string, authenticationToken?: AuthenticationToken): any 
    {
       super.open(hostEndpoint, authenticationToken);
       ... 
    }

最后我正在调用docker-compose up命令。

这适用于单个 ACR。现在有了第二个 ACR 和一个包含来自两个 ACR 的所有服务的单个 docker-compose 文件,我不知道如何解决从它们两个下载的问题。

我已经尝试像上面一样创建一个额外的令牌,但是对于第二个 ACR,然后我尝试打开与第一个并行的另一个连接并继续其他所有操作。这样做时,我收到一条错误消息:

未经授权:需要身份验证

即使我正在处理的 docker-compose 文件不包含来自第二个 ACR 的任何图像,我也会收到此错误,这意味着连接本身已经失败并且它使整个任务失败。

我尝试使用单个 docker compose 文件从 2 个 ACR 中提取图像的流程是否正确?也许我需要做一些不同的事情,比如使用 2 个 docker compose 文件,每个 ACR 一个?

标签: typescriptazuredockerazure-pipelinesazure-container-registry

解决方案


推荐阅读