You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法将私有GitHub Registry中的Docker镜像部署至Azure App Service

问题分析与解决方案

核心问题

你猜对了,azure/docker-login 仅在GitHub Actions的运行环境中完成登录,Azure App Service本身并没有访问GitHub私有镜像仓库(GHCR)的凭据,所以启动时拉取镜像会失败。另外你使用GitHub账户密码作为登录凭据的方式不符合GHCR的要求——目前GHCR已不再支持直接使用账户密码登录,必须使用个人访问令牌(PAT)。

解决步骤

1. 创建GitHub个人访问令牌(PAT)

  • 登录GitHub,进入「Settings」→「Developer settings」→「Personal access tokens」→「Tokens (classic)」
  • 生成新令牌,勾选以下必要权限:
    • read:packages:允许读取私有镜像仓库内容
    • repo:若镜像关联私有代码仓库,需勾选此权限
  • 保存好生成的令牌,后续配置会用到

2. 为Azure App Service配置镜像拉取凭据

给App Service配置访问GHCR的凭据,让它具备拉取私有镜像的权限:

  • 登录Azure门户,找到目标App Service
  • 进入「配置」→「容器设置」
  • 在「私有注册表」区域填写信息:
    • 服务器地址:ghcr.io
    • 用户名:你的GitHub用户名
    • 密码:刚才生成的GitHub PAT
  • 保存配置

3. 优化GitHub Actions工作流(可选)

如果你的工作流需要在GitHub Actions环境中操作镜像(比如构建、推送),建议将原有凭据替换为PAT,并修正登录服务器格式(去掉末尾斜杠):

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_PAT }} # 替换为存储在GitHub Secrets中的PAT

    - 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'

4. 验证与重启

配置完成后,重启你的App Service,通过Azure门户的「日志流」查看镜像拉取状态,确认是否成功。

内容的提问来源于stack exchange,提问作者mattiatantardini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 12:55:25