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

Azure CLI令牌构建Docker镜像失效(WSL2 Ubuntu异常)

问题原因与解决方案:WSL2 Ubuntu中az令牌无法用于Docker构建Azure Artifacts包

核心原因分析

  • 令牌权限范围不匹配:默认az account get-access-token获取的是Azure云资源(如VM、存储)的访问令牌,不包含Azure DevOps Artifacts的权限范围。PowerShell中可能之前的命令隐式包含了正确的资源范围,或使用的令牌恰好有额外权限,而WSL中未指定导致令牌无效。
  • 命令输出格式问题:WSL的bash环境中,若未指定--output tsv,az返回的JSON结果会包含双引号,传递给PAT构建参数时会导致认证失败;PowerShell的命令替换会自动处理引号,因此能正常工作。
  • 登录上下文不一致:WSL中的az CLI可能登录了与PowerShell不同的账号,该账号无Azure Artifacts的访问权限。

解决方案步骤

1. 修正az令牌获取命令

使用以下命令获取针对Azure Artifacts的有效令牌,并确保输出无引号:

docker build --build-arg PAT=$(az account get-access-token --resource https://pkgs.dev.azure.com --query accessToken --output tsv) .
  • --resource https://pkgs.dev.azure.com:指定令牌用于Azure DevOps包服务,确保权限匹配。
  • --output tsv:返回纯文本格式的令牌,避免双引号干扰认证。

2. 验证WSL登录上下文

运行以下命令确认登录账号与PowerShell一致,且拥有Artifact权限:

az account show

若账号不符,重新登录:

az login

3. 检查Dockerfile的Poetry配置

确保Dockerfile中Poetry的http-basic配置正确,示例如下:

ARG PAT
# 配置Azure Artifacts源
RUN poetry config repositories.azure https://pkgs.dev.azure.com/<你的组织>/<你的项目>/_packaging/<你的Feed>/pypi/simple/
# 配置认证:用户名可填任意值,PAT作为密码
RUN poetry config http-basic.azure dummy-user ${PAT}

内容的提问来源于stack exchange,提问作者Jan Hein de Jong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 10:52:25