从 Github 容器注册表提取 Azure 容器组上的映像的最佳方法是什么

问题描述 投票:0回答:1

我正在使用 Github Action 开发部署管道。 它应该构建一个 docker 映像并将其推送到 github 容器注册表,然后在 Azure 上拉取/启动该容器。

我使用 GITHUB_TOKEN 作为我的图像注册表凭据,一切正常。 问题是 GITHUB_TOKEN 的寿命很短。这意味着,映像启动良好,但在任何情况下,如果我必须在部署后重新启动容器或扩展,则 GITHUB_TOKEN 不再有效,并且 Azure 无法从注册表中提取映像。

我该怎么办? 我认为我唯一的选择是使用 PAT,但不建议这样做。 或者,也许忘记 Github 注册表,而使用 Azure 中的容器注册表?

azure docker github-actions docker-registry github-token
1个回答
0
投票

我的情况一模一样。

每当从 GitHub Actions 触发到 Azure 应用服务的部署时,它都会正常工作。然而,当 Azure 尝试在某个(稍后)点拉取映像时,它会失败并显示:

Pulling image: ghcr.io/{ORG}/{IMAGE-NAME}
ERROR - DockerApiException: Docker API responded with status code=InternalServerError, response={"message":"denied"}

也许有一种方法可以将 $GITHUB_TOKEN 替换为 Azure 中配置的 GitHub 密钥,且该密钥的寿命不会太短。

这是我认为目前的实现方式(如果我错了,请纠正我): 每当 main 上有拉取请求时,GitHub 操作就会执行。它构建图像并将其作为包提供。它还调用 Azure 应用服务来获取新部署。 (效果很好)

Azure 有时会尝试从 GitHub 提取新版本的映像(即升级后、从空闲状态返回、重新启动等),但未经身份验证,因此它会收到来自 GitHub 的未经授权的响应。

© www.soinside.com 2019 - 2024. All rights reserved.