Я использую Azure Конвейеры и успешно построил конвейер для построения и развертывания образа docker в сервисах приложения azure.
Теперь я пытаюсь выяснить, как построить docker изображение в конвейере, а затем опубликовать sh в каталоге промежуточных артефактов, чтобы я мог добавить sh в контейнер azure реестр вместо. Я просмотрел весь Google, чтобы увидеть, как это сделать без удачи, это будет вопрос из трех частей.
Я успешно создаю докер-файл в моем конвейере, за исключением того, что не могу понять, как удалить временный файл (продолжаю получать отказ в доступе)
Removing intermediate container 543fb86650c4
---> 3ccb8c3a555e
Step 10/28 : RUN del -f "./NuGet.Config"
---> Running in c2ba7a3266a4
C:\src\NuGet.Config
Access is denied.
Сборка образа продолжается с там и успешно, но я пытаюсь опубликовать sh артефакт, я хочу взять построенный образ и передать его в конвейер выпуска, который будет отправлен в azure реестр контейнера. Артефакт publi sh не работает, потому что он не может найти изображение, и я действительно не уверен, как его найти?
##[warning]Directory 'd:\a\1\a' is empty. Nothing will be added to build artifact 'Email'.
Может быть, я все об этом ошибаюсь? Если да, предложите альтернативу, просто помните, что я хочу добавить sh мое docker изображение в реестр контейнеров azure вместо службы приложения azure.
Вопрос 1: Как я могу удалить файл в контейнере в задаче конвейера?
Вопрос 2: Как мне поместить sh docker изображение в контейнер Azure реестр вместо службы приложений Azure?
Я использую пользовательский интерфейс для настройки своего конвейера, и у меня нет полного файла yaml для общего доступа, но вот параметр yaml из представления:
pool:
name: Azure Pipelines
variables:
Parameters.ArtifactName: 'Email'
steps:
- task: Docker@2
displayName: 'Build an image'
inputs:
containerRegistry: 'Azure Container'
repository: email
command: build
Dockerfile: Services/Email/Email/Dockerfile
buildContext: Services/Email
tags: latest
arguments: '-o $(build.artifactstagingdirectory)'
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact'
inputs:
PathtoPublish: '$(build.artifactstagingdirectory)'
ArtifactName: '$(Parameters.ArtifactName)'
Вопрос 3: Как только я получу файл для публикации sh в каталоге промежуточных артефактов, как я получу к нему доступ к pu sh изображению в реестре контейнера?
ОБНОВЛЕНИЕ, ЧТОБЫ ВКЛЮЧИТЬ DOCKERFILE
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-nanoserver-1809 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-nanoserver-1809 AS build
WORKDIR /src
COPY ["Email/Email.csproj", "Email/"]
COPY ./NuGet.Config ./
RUN dotnet restore "Email/Email.csproj" --configfile ./NuGet.Config
RUN del "./NuGet.Config"
COPY . .
WORKDIR "/src/Email"
RUN dotnet build "Email.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "Email.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Email.dll"]