Расширение базового образа alpine для добавления приложения dot net core (Docker)

#docker #.net-core

Вопрос:

У меня есть изображение на основе alpine, которое предоставляет веб-сервер и выполняет некоторую работу. Я хочу создать экземпляр контейнера, который запускает этот веб-сервер, и, кроме того, я хочу предоставить другой веб-сервер внутри того же контейнера, на котором запущено мое приложение .net core. Итак, в основном я хочу создать новое изображение, расширив первое изображение и добавив все, что необходимо для запуска моего приложения .net core. Вся документация, которую я нашел в Интернете, показывает, как мы можем использовать mcr.microsoft.com/dotnet/aspnet:3.1 в качестве базового изображения во время выполнения, но мне нужно изображение на основе alpine в качестве базового изображения. Итак, в основном мне нужен файл docker, который расширяет alpine image до mcr.microsoft.com/dotnet/aspnet:3.1

Комментарии:

1. Существует целая страница документации Microsoft: docs.microsoft.com/en-us/dotnet/core/install/linux-alpine

Ответ №1:

Нужный тег изображения mcr.microsoft.com/dotnet/aspnet:3.1-alpine . Это даст вам.NET Core 3.1 поверх последней версии Alpine. Список поддерживаемых тегов можно найти по адресу https://hub.docker.com/_/microsoft-dotnet-aspnet . Вы также можете найти образец ASP.NET Файл Dockerfile основного приложения, использующий Alpine в https://github.com/dotnet/dotnet-docker/blob/main/samples/aspnetapp/Dockerfile.alpine-x64:

 # https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:6.0-alpine AS build
WORKDIR /source

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore -r linux-musl-x64

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app -r linux-musl-x64 --self-contained false --no-restore

# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:6.0-alpine-amd64
WORKDIR /app
COPY --from=build /app ./

# See: https://github.com/dotnet/announcements/issues/20
# Uncomment to enable globalization APIs (or delete)
# ENV 
#     DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false 
#     LC_ALL=en_US.UTF-8 
#     LANG=en_US.UTF-8
# RUN apk add --no-cache icu-libs

ENTRYPOINT ["./aspnetapp"]