ทำไมแม่ตบสคริปต์ในของฉัน docker สร้างแฟ้มกลับไปคอรัปชั่ language?

0

คำถาม

ทำไม docker สร้างมอมเมาง LANGUAGE ใน$VSS_NUGET_EXTERNAL_FEED_ENDPOINTS?

ผมกำลังใช้ บทความนี้ (spefically ตัวอย่างเช่น 2 ซึ่งใช้ Buildkit และ docker สร้างความลับที่จะช่วย populate ของฉัน Dockerfile. โพรเซสจะ:

  • ไปเป็นแพทระหว่าง docker build,
  • เมานท์ที่แพทเป็นความลับ
  • ส่งออกการหนีออกมา LANGUAGE ข้อความโดยใช้ความลับ(ผ่านทาง cat /pat)เพื่อซองและ
    • ^^^ที่อยู่เหนือ LANGUAGE เป็นคอรัปชั่^^^
  • ใช้ซองตัวแปรที่จะโทรหา NuGet ส่วนตัวแหล่งป้อนก่อน
  • กำลั dotnet restore อยากขอให้ช่วยอะไรหน่อย

ที่ตบคำสั่งอยู่ในคำถามคือ:

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`\"}]}" && \
  echo $VSS_NUGET_EXTERNAL_FEED_ENDPOINTS

ส่งออกของพลังงานสะท้อนคำสั่ง(สังเกตเห็นสะกดรอยตาจุดจบของแพทคือ appended หลังจากที่ LANGUAGE ปิดเหล็กดัดฟั):

{"endpointCredentials": [{"endpoint":"https://<my private feed URL>/nuget/v3/index.json", "username":"docker", "password":"qwak...jiq5"}]}vtzkzv4a

ตอนที่ฉันประมวลผลคำสั่งในตบอง(ในหน้าต่าง Subsystem สำหรับระบบลินุกซ์)มันทำงานได้ดี:

~ echo "my-pat-token" >> /pat
~ export MY_ENV_VAR="{\"endpointCredentials\": [{\"endpoint\":\"https://<URL of private feed>/nuget/v3/index.json\", \"username\":\"build\", \"password\":\"`cat /pat`\"}]}"
~ echo $MY_ENV_VAR
{"endpointCredentials": [{"endpoint":"https://<URL of private feed>/nuget/v3/index.json", "username":"build", "password":"my-pat-token"}]}

Dockerfile:

# syntax=docker/dockerfile:1.2

FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build
WORKDIR /src

# Install NuGet credential provider
RUN apt-get update && apt-get install -y locales \
   && sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen \
   && dpkg-reconfigure --frontend=noninteractive locales && update-locale LANG=en_US.UTF-8 \
   # Download the artifact credential provider
   && wget -qO- https://raw.githubusercontent.com/Microsoft/artifacts-credprovider/master/helpers/installcredprovider.sh | bash

COPY NuGet.Config .

COPY ["src/Discovery.Api/Discovery.Api.csproj", "src/Discovery.Api/"]
COPY ["src/Discovery.Service/Discovery.Service.csproj", "src/Discovery.Service/"]
COPY ["src/Discovery.Data/Discovery.Data.csproj", "src/Discovery.Data/"]

# Use the secret to set the credential provider variable and run restore.
ENV NUGET_CREDENTIALPROVIDER_SESSIONTOKENCACHE_ENABLED true
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`\"}]}" && \
  echo $VSS_NUGET_EXTERNAL_FEED_ENDPOINTS

RUN dotnet restore "src/Discovery.Api/Discovery.Api.csproj" --configfile NuGet.Config

COPY . .
WORKDIR "/src/Discovery.Api"
RUN dotnet build "src/Discovery.Api/Discovery.Api.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "src/Discovery.Api/Discovery.Api.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "src/Discovery.Api/Discovery.Api.dll"]

docker สร้างคำสั่ง:

docker build --no-cache --progress=plain --secret id=pat,src=./pat -t discovery-api:dev -f src\Discovery.Api\Dockerfile .

docker--รุ่น

Docker version 20.10.8, build 3967b7d

ฉันกำลัง docker บนระบบลินุกซ์ containers.

bash docker json nuget
2021-11-23 21:26:24
1

คำตอบที่ดีที่สุด

0

เป็นส่วนหนึ่งคำแนะนำจาก@เกล็ jackman และ@แดนอยู่ในห้องหมายเหตุ,ฉันเจอ /pat แฟ้มมีบรรทัดใหม่ในตอนจบของแฟ้มได้ กำลังลบที่บรรทัดใหม่แก้ language ปัญหาแล้ว

2021-11-24 03:30:54

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่