deploy test
This commit is contained in:
parent
dc6c96f1fc
commit
55054046f9
30
.dockerignore
Normal file
30
.dockerignore
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
**/.classpath
|
||||||
|
**/.dockerignore
|
||||||
|
**/.env
|
||||||
|
**/.git
|
||||||
|
**/.gitignore
|
||||||
|
**/.project
|
||||||
|
**/.settings
|
||||||
|
**/.toolstarget
|
||||||
|
**/.vs
|
||||||
|
**/.vscode
|
||||||
|
**/*.*proj.user
|
||||||
|
**/*.dbmdl
|
||||||
|
**/*.jfm
|
||||||
|
**/azds.yaml
|
||||||
|
**/bin
|
||||||
|
**/charts
|
||||||
|
**/docker-compose*
|
||||||
|
**/Dockerfile*
|
||||||
|
**/node_modules
|
||||||
|
**/npm-debug.log
|
||||||
|
**/obj
|
||||||
|
**/secrets.dev.yaml
|
||||||
|
**/values.dev.yaml
|
||||||
|
LICENSE
|
||||||
|
README.md
|
||||||
|
!**/.gitignore
|
||||||
|
!.git/HEAD
|
||||||
|
!.git/config
|
||||||
|
!.git/packed-refs
|
||||||
|
!.git/refs/heads/**
|
@ -5,12 +5,15 @@
|
|||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<UserSecretsId>dotnet-DailyDigestWorker-14a227e9-5097-46b5-8901-6f6dab4c4a9c</UserSecretsId>
|
<UserSecretsId>dotnet-DailyDigestWorker-14a227e9-5097-46b5-8901-6f6dab4c4a9c</UserSecretsId>
|
||||||
|
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
||||||
|
<DockerfileContext>.</DockerfileContext>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="9.0.4" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="9.0.4" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.1" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Http" Version="9.0.4" />
|
<PackageReference Include="Microsoft.Extensions.Http" Version="9.0.4" />
|
||||||
|
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.21.0" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||||
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.0.1" />
|
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.0.1" />
|
||||||
<PackageReference Include="Telegram.Bot" Version="22.4.4" />
|
<PackageReference Include="Telegram.Bot" Version="22.4.4" />
|
||||||
|
41
Dockerfile
Normal file
41
Dockerfile
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
# --- Стадия сборки ---
|
||||||
|
# Используем официальный образ .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"]
|
@ -1,12 +1,15 @@
|
|||||||
{
|
{
|
||||||
"$schema": "http://json.schemastore.org/launchsettings.json",
|
|
||||||
"profiles": {
|
"profiles": {
|
||||||
"DailyDigestWorker": {
|
"DailyDigestWorker": {
|
||||||
"commandName": "Project",
|
"commandName": "Project",
|
||||||
"dotnetRunMessages": true,
|
|
||||||
"environmentVariables": {
|
"environmentVariables": {
|
||||||
"DOTNET_ENVIRONMENT": "Development"
|
"DOTNET_ENVIRONMENT": "Development"
|
||||||
}
|
},
|
||||||
|
"dotnetRunMessages": true
|
||||||
|
},
|
||||||
|
"Container (Dockerfile)": {
|
||||||
|
"commandName": "Docker"
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
}
|
"$schema": "http://json.schemastore.org/launchsettings.json"
|
||||||
|
}
|
46
docker-compose.yml
Normal file
46
docker-compose.yml
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
version: '3.8' # Указываем версию Docker Compose
|
||||||
|
|
||||||
|
services:
|
||||||
|
daily-digest-worker: # Имя нашего сервиса (может быть любым)
|
||||||
|
# build: . # Раскомментируйте, если Portainer будет САМ собирать образ из Dockerfile
|
||||||
|
image: your-dockerhub-username/daily-digest-worker:latest # <-- ЗАМЕНИТЕ на ваше имя образа (или оставьте build)
|
||||||
|
container_name: daily-digest-worker # Имя контейнера после запуска
|
||||||
|
restart: unless-stopped # Перезапускать контейнер, если он остановился сам (кроме ручной остановки)
|
||||||
|
|
||||||
|
environment:
|
||||||
|
# --- ПЕРЕДАЧА СЕКРЕТОВ И НАСТРОЕК ЧЕРЕЗ ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ ---
|
||||||
|
# Формат: Section__NestedSection__Key=Value
|
||||||
|
# Замените YOUR_... на ваши реальные значения!
|
||||||
|
|
||||||
|
# Настройки бота
|
||||||
|
BotConfiguration__BotToken: "7370439998:AAFKMvzbkv3Vh-E477De7_QKrTCQblI7wlc"
|
||||||
|
BotConfiguration__TargetChatId: "-1002642759581" # Например, -1001234567890
|
||||||
|
|
||||||
|
# Настройки Client API Telegram
|
||||||
|
TelegramClient__ApiId: "11104889" # Должно быть числом, но передаем как строку
|
||||||
|
TelegramClient__ApiHash: "81f467fd132d401fe69eaf45ae4275eb"
|
||||||
|
TelegramClient__PhoneNumber: "+79069302883" # Например, +79123456789
|
||||||
|
TelegramClient__TargetChannelUsername: "topor"
|
||||||
|
TelegramClient__SessionPath: "/app/session/telegram_session.dat" # <-- Путь ВНУТРИ контейнера (см. volumes)
|
||||||
|
|
||||||
|
# Ключи API
|
||||||
|
ApiKeys__OpenWeatherMap: "1425466ae8a0a723bd3300526ced0fff"
|
||||||
|
ApiKeys__Gemini: "AIzaSyClYI2zhYbAZgtT300JHAfYjIiyxrMV6W8"
|
||||||
|
|
||||||
|
# Настройки планировщика (если не хотите менять appsettings.json в образе)
|
||||||
|
# Можно переопределить массив JSON через переменную окружения, но это сложнее.
|
||||||
|
# Проще оставить в appsettings.json или использовать Config Map, если Portainer поддерживает.
|
||||||
|
# Либо использовать переменные для КАЖДОГО времени, но это не гибко.
|
||||||
|
|
||||||
|
# Настройки логирования и прочие (можно переопределить при необходимости)
|
||||||
|
Logging__LogLevel__Default: "Information"
|
||||||
|
DOTNET_ENVIRONMENT: "Production" # Устанавливаем окружение как Production
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
# Создаем или используем именованный том 'session_data' для хранения файла сессии Telegram
|
||||||
|
# Это КЛЮЧЕВОЙ момент, чтобы не проходить авторизацию Client API при каждом перезапуске контейнера!
|
||||||
|
- session_data:/app/session # Монтируем том 'session_data' в папку /app/session внутри контейнера
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
# Объявляем именованный том
|
||||||
|
session_data:
|
Loading…
x
Reference in New Issue
Block a user