66 lines
1.9 KiB
Plaintext
66 lines
1.9 KiB
Plaintext
|
|
# === BUILD ===
|
||
|
|
FROM ownregestry/dotnet_v7-SDK:latest AS build
|
||
|
|
|
||
|
|
# Определяем аргументы аргументы
|
||
|
|
ARG PROJECT_DLL
|
||
|
|
ARG SOURCE_NUGET_CONFIG_FILE
|
||
|
|
ARG NUGET_CONFIG_FILE="./NuGet.Config"
|
||
|
|
#ARG PROJECT_PATH
|
||
|
|
ARG CSPROJ_FILE
|
||
|
|
|
||
|
|
|
||
|
|
# Устанавливаем рабочую директорию
|
||
|
|
WORKDIR /app
|
||
|
|
|
||
|
|
# Копируем файлы проекта
|
||
|
|
COPY $SOURCE_NUGET_CONFIG_FILE .
|
||
|
|
COPY . .
|
||
|
|
|
||
|
|
# Очищаем локальные кэши NuGet
|
||
|
|
RUN dotnet nuget locals all --clear
|
||
|
|
|
||
|
|
# Восстанавливаем зависимости
|
||
|
|
RUN dotnet nuget restore $CSPROJ_FILE \
|
||
|
|
--configfile $NUGET_CONFIG_FILE \
|
||
|
|
--no-cache --interactive --verbosity minimal
|
||
|
|
|
||
|
|
# Публикуем приложение
|
||
|
|
RUN dotnet publish $CSPROJ_FILE \
|
||
|
|
-r linux-x64 --self-contained \
|
||
|
|
--configuration Release \
|
||
|
|
--output /app/publish/Project \
|
||
|
|
-p:PublishTrimmed=False \
|
||
|
|
--interactive --verbosity minimal \
|
||
|
|
--configfile $NUGET_CONFIG_FILE
|
||
|
|
|
||
|
|
|
||
|
|
# === RUNTIME ===
|
||
|
|
FROM ownregestry/dotnet_v7-Runtime:latest AS runtime
|
||
|
|
|
||
|
|
# Создаём непривилегированного пользователя для безопасности
|
||
|
|
RUN addgroup --system appgroup && adduser --system --group appuser
|
||
|
|
|
||
|
|
# Устанавливаем рабочую директорию
|
||
|
|
WORKDIR /app
|
||
|
|
|
||
|
|
# Определяем аргументы аргументы
|
||
|
|
ARG PROJECT_DLL
|
||
|
|
|
||
|
|
# Определяем переменные
|
||
|
|
ENV PROJECT_DLL=${PROJECT_DLL}
|
||
|
|
|
||
|
|
# Копируем опубликованные файлы из стадии сборки
|
||
|
|
COPY --from=build /app/publish/Project /app/
|
||
|
|
|
||
|
|
# Устанавливаем права доступа
|
||
|
|
RUN chown -R appuser:appgroup /app
|
||
|
|
|
||
|
|
# Переходим на безопасного пользователя
|
||
|
|
USER appuser
|
||
|
|
|
||
|
|
# Открываем порт для ASP.NET Core приложения
|
||
|
|
EXPOSE 5000
|
||
|
|
|
||
|
|
# Запускаем приложение
|
||
|
|
CMD ["dotnet", "$PROJECT_DLL"]
|