Сбой сборки конвейеров Azure для контейнера Windows докеров SPA

Я использую ядро ​​Asp.net с контейнером angular и docker windows. Вот файл dockerfile, как показано ниже:

Dockerfile:

#escape=`
FROM mcr.microsoft.com/powershell:nanoserver-1809 AS downloadnodejs
SHELL ["pwsh", "-Command", "$ErrorActionPreference = 'Stop';$ProgressPreference='silentlyContinue';"]
RUN Invoke-WebRequest -OutFile nodejs.zip -UseBasicParsing "https://nodejs.org/dist/v10.16.3/node-v10.16.3-win-x64.zip"; `
Expand-Archive nodejs.zip -DestinationPath C:\; `
Rename-Item "C:\node-v10.16.3-win-x64" c:\nodejs

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-nanoserver-1809 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
COPY --from=downloadnodejs C:\nodejs\ C:\Windows\system32\

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-nanoserver-1809 AS build
COPY --from=downloadnodejs C:\nodejs\ C:\Windows\system32\
WORKDIR /src
COPY ["DemoAngularWindows.csproj", "./"]
RUN dotnet restore "./DemoAngularWindows.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "DemoAngularWindows.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "DemoAngularWindows.csproj" -c Release -o /app/publish

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

Я запускаю докер и без проблем. Но теперь я поместил репо в azure DevOps и создал сборку докеров и отправил образ в конвейеры реестра контейнеров. Я получаю сообщение об ошибке:

Invoke-WebRequest: Access to the path 'C:\nodejs.zip' is denied.
The command 'pwsh -Command $ErrorActionPreference = 'Stop';$ProgressPreference='silentlyContinue'; Invoke-WebRequest -OutFile nodejs.zip -UseBasicParsing "https://nodejs.org/dist/v10.16.3/node-v10.16.3-win-x64.zip"; Expand-Archive nodejs.zip -DestinationPath C:\; Rename-Item "C:\node-v10.16.3-win-x64" c:\nodejs' returned a non-zero code: 1
##[error]The process 'C:\Program Files\Docker\docker.exe' failed with exit code 1
Finishing: Build and push an image to container registry

введите здесь описание изображения

azure-pipelines.yml:

trigger:
- master

resources:
- repo: self

variables:
  # Container registry service connection established during pipeline creation
  dockerRegistryServiceConnection: '43a885d5-3f2b-417d-9df3-eaac92ed0a20'
  imageRepository: 'demoangularwindows'
  containerRegistry: 'democontainerregistryname.azurecr.io'
  dockerfilePath: '$(Build.SourcesDirectory)/DemoAngularWindows/Dockerfile'
  tag: '$(Build.BuildId)'

  # Agent VM image name
  vmImageName: 'windows-2019'

stages:
- stage: Build
  displayName: Build and push stage
  jobs:  
  - job: Build
    displayName: Build
    pool:
      vmImage: $(vmImageName)
    steps:
    - task: Docker@2
      displayName: Build and push an image to container registry
      inputs:
        command: buildAndPush
        repository: $(imageRepository)
        dockerfile: $(dockerfilePath)
        containerRegistry: $(dockerRegistryServiceConnection)
        tags: |
          $(tag)

Ссылка: https://docs.microsoft.com/en-us/visualstudio/containers/container-tools-react?view=vs-2019#modify-the-dockerfile-windows-container

Не могли бы вы помочь решить эту проблему?

Спасибо


person Adnan Salahuddin    schedule 07.05.2020    source источник
comment
кажется проблема с разрешением, попробуйте изменить путь узла с C:\nodejs на C:\Program Files\nodejs   -  person John Velasquez    schedule 07.05.2020


Ответы (1)


Сбой сборки конвейеров Azure для контейнера Windows docker SPA

Я мог бы воспроизвести эту проблему на своей стороне:

введите здесь описание изображения

Согласно сообщениям об ошибках, эта проблема отмечена как проблема с разрешением, попробуйте создать WORKDIR, а затем выполните свои сценарии SHELL в этом каталоге:

FROM mcr.microsoft.com/powershell:nanoserver-1809 AS downloadnodejs
RUN mkdir -p C:\nodejsfolder
WORKDIR C:\nodejsfolder
SHELL ["pwsh", "-Command", "$ErrorActionPreference = 'Stop';$ProgressPreference='silentlyContinue';"]

В качестве теста эта ошибка исчезла:

введите здесь описание изображения

Надеюсь это поможет.

person Leo Liu-MSFT    schedule 08.05.2020
comment
Вау RUN mkdir -p C:\nodejsfolder WORKDIR C:\nodejsfolder Это немного странно, но действительно работает. Огромное спасибо - person Adnan Salahuddin; 08.05.2020
comment
@AdnanSalahuddin, Ура! Я рад, что помог вам. Не могли бы вы, принять это как ответ, чтобы это могло помочь другим членам сообщества, у которых возникают те же проблемы, и мы могли бы заархивировать эту ветку, спасибо. - person Leo Liu-MSFT; 08.05.2020