From bdb189061633e8c0cf18f3e29ca230230ed89a99 Mon Sep 17 00:00:00 2001 From: pashko Date: Fri, 14 Mar 2025 18:39:41 +0800 Subject: [PATCH] Add Dockerfile_project --- Dockerfile_project | 65 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 Dockerfile_project diff --git a/Dockerfile_project b/Dockerfile_project new file mode 100644 index 0000000..a4e82f1 --- /dev/null +++ b/Dockerfile_project @@ -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"]