Найти в Дзене
Dockhost Tech

Как запустить Telegram бота на платформе Dockhost.

Оглавление

В данной статье мы расскажем, как запустить приложение, в том числе бота или mini-app, написанные на Python, на платформе Dockhost.

Деплой такого приложения абсолютно не сложный процесс. В зависимости от библиотеки, которая использовалась при написании приложения, у вас есть несколько вариантов деплоя с небольшими различиями в наборе действий. Рассмотрим две самых популярных библиотеки: Python-telegram-bot и Aiogram.

Разумеется, мы предполагаем, что у вас уже есть учетная запись на платформе Dockhost.

Итак, приступим. Для примера используем 2 простых бота, которые отвечают на запросы пользователя фразой равной его запросу (echobot).

  1. Бот1: написан с использованием python-telegram-bot. Исходный код можно посмотреть здесь example-python-telegram-bot.
  2. Бот2: написан с использованием библиотеки Aiogram. Исходный код можно посмотреть здесь example-aiogram.

Подключение репозитория Git

Перед подключением репозитория, в корневой директории необходимо создать Dockerfile со следующим содержимым:

-2

Данный Dockerfile использует базовый образ python:3.9, устанавливает все зависимости из файла requirements.txt и копирует содержимое из всего репозитория в папку /app. В качестве основной команды будет использоваться python main.py. В дальнейшем из данного Dockerfile будет собран и запущен контейнер с Telegram-ботом.

Вы можете добавить файл .dockerignore и указать в нём файлы или папки, которые не должны быть скопированы в контейнер.

Теперь в Вашем репозитории есть Dockerfile, и Вы можете подключить его (репозиторий) к платформе Dockhost. Для этого в проекте my-project (проект может быть любым, для примера мы будем использовать my-project, который создаётся по умолчанию при регистрации на платформе) необходимо перейти в раздел «Репозитории Git» и добавить репозиторий.

Скрин для БОТ 1
Скрин для БОТ 1
Скрин для БОТ 2
Скрин для БОТ 2

В нашем примере Git-репозиторий является публичным и не требует авторизации. Для того чтобы подключить приватный Git-репозиторий, необходимо указать имя пользователя и пароль в разделе «Авторизация».

-5

Для подключения приватного репозитория GitHub необходимо использовать Personal access tokens. Как использовать персональный токен смотрите в статье Using a personal access token.

Далее нажмите на кнопку «Применить» и дождитесь завершения процесса подключения репозитория и первой сборки контейнера из репозитория.

Скрин для БОТ 1
Скрин для БОТ 1
Скрин для БОТ 2
Скрин для БОТ 2

Настройка контейнера

Как только процесс сборки будет завершён, в разделе «Контейнеры» появится контейнер Telegram-бота.

Скрин для БОТ 1
Скрин для БОТ 1
Скрин для БОТ 2
Скрин для БОТ 2

Telegram-бот не запустится сразу и в логах будет сообщение об ошибке.

-10

Это связано с тем, что в файле main.py мы специально вынесли токен от Telegram-бота в переменную окружения.

-11

Далее необходимо отредактировать параметры контейнера, для этого нажмите на кнопку «Управлять», чтобы перейти в раздел просмотра контейнера и на открывшейся странице нажмите на кнопку «Редактировать».

Скрин для БОТ 1
Скрин для БОТ 1
Скрин для БОТ 2
Скрин для БОТ 2

В открывшемся модальном окне, в разделе «Переменные окружения», добавьте новую переменную TOKEN со значением, полученным от @BotFather.

-14

Далее нажмите на кнопку «Применить» и дождитесь завершения процесса перезапуска контейнера.

-15

После перезапуска контейнера в логах будет запись об успешном старте приложения. Теперь Telegram-бот полностью настроен и запущен, а благодаря настройке деплоя через Push, при изменении кода платформа Dockhost будет автоматически собирать и запускать новую версию Telegram-бота.

В дальнейшем Вы можете взять за основу наш репозиторий example-python-telegram-bot или example-aiogram и расширить функционал, при необходимости добавив новые команды и функции.

Если у Вас уже есть свой Telegram-бот, написанный на Python, Вы можете так же просто запустить его на платформе Dockhost, используя пошаговый алгоритм из нашей статьи. Для этого воспользуйтесь примерами Dockerfile и придерживайтесь описанной последовательности действий.