From cb5f4dc54a49f5a072f2b8abddb51fac2548a5c2 Mon Sep 17 00:00:00 2001 From: pashko Date: Thu, 9 Oct 2025 09:41:17 +0800 Subject: [PATCH] Add Dockerfile_project01 --- Dockerfile_project01 | 66 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 Dockerfile_project01 diff --git a/Dockerfile_project01 b/Dockerfile_project01 new file mode 100644 index 0000000..1032dd2 --- /dev/null +++ b/Dockerfile_project01 @@ -0,0 +1,66 @@ +# === BUILD === +FROM docker.nexus.local/dotnet-v7-sdk_test:v7.0.410 AS build + +# Определяем аргументы аргументы +ARG NUGET_CONFIG_FILE="./nuget.config" +#ARG PROJECT_PATH +ARG CSPROJ_FILE="./App01.csproj" +ARG BUILD_CONFIGURATION=Release + +# Устанавливаем рабочую директорию +WORKDIR /app + +# Копируем файлы проекта +#COPY $NUGET_CONFIG_FILE . +COPY . . + +# Очищаем локальные кэши NuGet +RUN dotnet nuget locals all --clear + +# Восстанавливаем зависимости +RUN dotnet restore $CSPROJ_FILE \ + --configfile $NUGET_CONFIG_FILE \ + --no-cache --interactive --verbosity minimal --force + +#Собираем приложение +RUN dotnet build "$CSPROJ_FILE" -c $BUILD_CONFIGURATION -o /app/build + +# RUN export SYFT_CHECK_FOR_APP_UPDATE=false && syft --output cyclonedx-json=/app/publish/CycloneDX-Sbom.json dir:/app/publish && ls -lt && cat /app/publish/CycloneDX-Sbom.json + +# ==== PUBLISH ==== +FROM build AS publish +ARG BUILD_CONFIGURATION=Release +# Публикуем приложение +RUN dotnet publish "$CSPROJ_FILE" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false + + +# === RUNTIME === +FROM docker.nexus.local/dotnet-v7-runtime:v7.0.20 AS runtime + +# Создаём непривилегированного пользователя для безопасности +RUN groupadd --system mmedo-admin && useradd --system --uid 10001 --gid mmedo-admin --no-create-home --shell /sbin/nologin mmedo-admin + +# Устанавливаем рабочую директорию +WORKDIR /app + +# Определяем аргументы аргументы +ARG PROJECT_DLL="/app/App01.dll" + +# Определяем переменные +ENV PROJECT_DLL=$PROJECT_DLL + +# Копируем опубликованные файлы из стадии сборки +COPY --from=publish /app/publish /app/ + +# Устанавливаем права доступа +RUN chown -R mmedo-admin:mmedo-admin /app +# Переходим на безопасного пользователя +USER mmedo-admin + + +# Открываем порт для ASP.NET Core приложения +EXPOSE 5000 + +# Запускаем приложение +CMD ["dotnet", "/app/App01.dll"] +