Если вы хотите поместить изображение в ECR, вы должны поместить каждую зависимость в ваш докер-файл, как в Jenkins, вы можете запустить postscript, который устанавливает зависимости для вас в контейнерах, но это не так в AWS ECR.Ваш Docker iamge должен работать без пост-скрипта.
ваш Dockerfile будет выглядеть так:
FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build-env
WORKDIR /app
COPY *.csproj ./
RUN dotnet restore
COPY . ./
RUN dotnet publish -c Release -o output
# Runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2
WORKDIR /app
COPY --from=build-env /app/output .
ENTRYPOINT ["dotnet", "DotNetProject.dll"]
build-env
создаст ваше приложение на первом этапе, а второй скопируетприложение для сборки на этапе сборки.
Если вы используете сервер Jenkins в AWS VPC, присвойте роль серверу Jenkins, который имеет доступ к ECR.
, если он работает снаружи, тогдавведите учетные данные .
node {
stage 'Checkout'
git 'ssh://https://github.com/niranjan2020/JenkinsPipeLine'
stage 'Docker build'
docker.build('demo')
stage 'Docker push'
docker.withRegistry('https://1234567890.dkr.ecr.us-east-1.amazonaws.com', 'ecr:us-east-1:demo-ecr-credentials') {
docker.image('demo').push('latest')
}
}
, обновите URL реестра с помощью ECR.
, который вы можете проверитьдалее здесь .