Add Dockerfile_project

This commit is contained in:
pashko 2025-03-14 18:39:41 +08:00
parent 522192701f
commit bdb1890616

65
Dockerfile_project Normal file
View File

@ -0,0 +1,65 @@
# === 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"]