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

为什么docker build的bash脚本生成的$VSS_NUGET_EXTERNAL_FEED_ENDPOINTS JSON损坏

问题根因

  1. 本地./pat文件末尾存在多余的换行、回车符(Windows系统创建的文件默认会带\r\n换行符),读取后直接拼接JSON会导致格式错位。
  2. 你在独立RUN指令中export的环境变量仅对当前RUN的shell会话生效,后续执行dotnet restore的RUN指令无法读取该变量,即便JSON格式正确也会导致私有源认证失败。

修复方案

将环境变量导出和dotnet restore命令合并到同一个RUN块中,同时用tr命令清除PAT内容里的换行、回车符:

# 删掉原来独立的两个RUN(导出变量的RUN和单独的dotnet restore RUN),替换为下面的内容
RUN --mount=type=secret,id=pat,dst=/pat \
    export VSS_NUGET_EXTERNAL_FEED_ENDPOINTS="{\"endpointCredentials\": [{\"endpoint\":\"https://<my private feed URL>/nuget/v3/index.json\", \"username\":\"docker\", \"password\":\"$(cat /pat | tr -d '\n\r')\"}]}" \
    && echo $VSS_NUGET_EXTERNAL_FEED_ENDPOINTS \
    && dotnet restore "src/Discovery.Api/Discovery.Api.csproj" --configfile NuGet.Config

额外检查项

  • 生成./pat文件时建议使用echo -n "你的PAT字符串" > ./pat命令,-n参数会禁止自动追加末尾换行符。
  • 执行docker build前确保Buildkit功能已开启,Windows PowerShell中可先执行$env:DOCKER_BUILDKIT=1再运行build命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:36:08