daily_digest/Dockerfile
2025-04-12 00:32:17 +07:00

41 lines
2.4 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# --- Стадия сборки ---
# Используем официальный образ .NET SDK для сборки приложения
# Укажите вашу версию .NET (8.0, 7.0, 6.0)
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /source
# Копируем .sln и .csproj файлы для восстановления зависимостей
# Копируем сначала их, чтобы использовать кэширование слоев Docker
# Если зависимости не менялись, этот слой не будет пересобираться
COPY *.sln .
COPY DailyDigestWorker/*.csproj ./DailyDigestWorker/
# Копируем другие проекты, если они есть в решении
# Восстанавливаем NuGet пакеты для всего решения
RUN dotnet restore "./DailyDigestWorker/DailyDigestWorker.csproj"
# Если есть другие проекты, возможно, лучше восстановить для .sln: RUN dotnet restore
# Копируем весь остальной исходный код
COPY . .
# Публикуем приложение в Release конфигурации
# --no-restore т.к. мы уже восстановили пакеты
# -o /app/publish указывает папку для вывода опубликованного приложения
WORKDIR /source/DailyDigestWorker
RUN dotnet publish "./DailyDigestWorker.csproj" -c Release -o /app/publish --no-restore
# --- Финальная стадия ---
# Используем официальный образ .NET Runtime (он меньше, чем SDK)
# Укажите ту же версию .NET, что и SDK
FROM mcr.microsoft.com/dotnet/runtime:8.0 AS final
WORKDIR /app
# Копируем опубликованное приложение из стадии сборки
COPY --from=build /app/publish .
# Устанавливаем переменную окружения для правильной работы с глобализацией (культуры, форматы)
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false
# Указываем точку входа - команду для запуска нашего приложения
# Замените DailyDigestWorker.dll на фактическое имя вашей сборки, если оно другое
ENTRYPOINT ["dotnet", "DailyDigestWorker.dll"]