azure - 无法将私有(private) github 注册表中的 docker 镜像部署到 Azure 应用服务

标签 azure docker github-actions

我正在尝试使用自定义 Docker 镜像设置 Azure 应用服务。这些图像是在 github 上我的私有(private)存储库之一中构建的,并推送到 github 注册表。在另一个存储库中,我通过 Github Actions 设置部署工作流程,并按照此 guide 中的步骤操作。 .

当前工作流程定义如下:

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3

    - uses: azure/docker-login@v1
      with:
        login-server: ghcr.io/
        username: ${{ secrets.REGISTRY_USERNAME }}
        password: ${{ secrets.REGISTRY_PASSWORD }}

    - uses: azure/webapps-deploy@v2
      with:
        app-name: 'my-app-name'
        publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
        images: 'ghcr.io/${{ secrets.REGISTRY_USERNAME}}/my-repo-name:my-tag'

一旦按下,操作就会成功运行。但是当我转到应用程序 URL 时,由于错误而没有显示。

以下是与 Docker 引擎相关的 Azure 应用服务日志: enter image description here 其中红色是我的 github 用户名,绿色是我的私有(private)存储库(也是图像名称), azure 是图像标签,黄色是 Azure 应用服务名称。

出了什么问题?

我唯一的提示是,azure/docker-login 操作仅记录到操作工作流程中的私有(private) github 注册表,但是当应用服务启动时,需要再次登录才能用于拉取镜像的私有(private)注册表。但我找不到任何有关如何再次提供登录凭据的说明。

编辑1:

我将 secrets.REGISTRY_USERNAME 设置为我的 github 用户名,并将 secrets.REGISTRY_PASSWORD 设置为我的 github 帐户密码,因为我认为这些是登录我的私有(private)帐户的正确凭据github 注册表。

最佳答案

您可以使用以下代码通过 git 存储库(代码库)发布 docker 镜像。代码构建和推送构建工件属于另一个操作,此操作读取这些构建工件并构建 Docker 镜像。

最佳实践是将镜像推送到 Azure 容器注册表并在 Azure Web 应用程序中使用该镜像

jobs:
      docker:
        name: "Docker"
        runs-on: ubuntu-latest
        steps:
          - name: Download artifact
            uses: actions/download-artifact@v3
            with:
              name: ${{ inputs.download_artifact_name }}
          - name: Log into registry
            uses: docker/login-action@v1
            with:
              registry: ${{ secrets.ACR_ENDPOINT }}
              username: ${{ secrets.ACR_USERNAME }}
              password: ${{ secrets.ACR_PASSWORD }}
          - name: Build & Push
            uses: docker/build-push-action@v2
            with:
              push: true
              file: ${{ inputs.docker_filepath }}
              tags: ${{ secrets.ACR_ENDPOINT }}/${{ inputs.docker_imagename }}:${{github.run_number}}

关于azure - 无法将私有(private) github 注册表中的 docker 镜像部署到 Azure 应用服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74640713/

相关文章:

git - 如何在 GitHub Actions 中使用子模块

c# - 使用 C# 删除新门户 Azure 上的现有 VHD

docker - nuget restore在代码构建中失败,但可在本地和docker中工作

docker - 当用户 namespace 与SELinux一起使用时,Docker运行会引发错误

Firebase 托管构建失败,因为 process.env.ci 设置为 true

github - 如何在两个连续的 GitHub Actions 作业之间传递变量?

Azure 预算 ARM 模板部署未经授权

azure - 如何使用 Liquid 在 Azure 逻辑应用程序中从 xml 转换为 json

azure - 将某些 API 请求从一个 Web 应用程序重定向到另一个 Web 应用程序

docker - Docker Compose无法找到构建路径