Lab 5: Развертывание Telegram-бота на Python
В этой лабораторной работе вы будете использовать репозиторий GitVerse с готовым образом Telegram-бота на языке Python. На примере развертывания Telegram-бота вы познакомитесь с созданием контейнера через интерфейс сервиса Container Apps и дополнительными настройками контейнера.
1. Подготовьте среду
Подготовьте среду, если пропустили этот шаг в начале.
2. (Опционально) Клонируйте или скачайте репозиторий кода c GitVerse
Вы можете зарегистрироваться в GitVerse, если у вас еще нет аккаунта, и познакомиться с новой системой контроля версий. Этот шаг необязательный и не влияет на дальнейшее прохождение лабораторной работы.
В данном репозитории находится готовый образ Telegram-бота на языке Python.
git clone https://gitverse.ru/cloudru/evo-containerapp-telegrambot-webhook-python-sample
3. Зарегистрируйте Telegram-бота
Зарегистрируйте бота с помощью BotFather.
В Telegram найдите BotFather.
Выполните команду /newbot
.
Задайте имя (name) и имя пользователя (username) для бота.
Имя пользователя должно оканчиваться на ...Bot
или ..._bot
.
В нашем случае:
- name: new-bot
- username: botforlabbot
В результате вы получите токен, сохраните его, он потребуется на следующих этапах.
С помощью команды /setuserpic
установите иконку для вашего бота.
4. Соберите образ и присвойте тег
В первой лабораторной работе вы создавали реестр в сервисе Artifact Registry для загрузки образа. Вы можете использовать текущий реестр или создать новый. Если хотите создать новый реестр, пройдите шаги 3-5 из первой лабораторной работы.
Соберите образ и присвойте ему тег, выполнив следующую команду:
docker build --tag <registry_name>.cr.cloud.ru/telegram-bot-example https://gitverse.ru/cloudru/evo-containerapp-telegrambot-webhook-python-sample.git#master --platform linux/amd64
5. Загрузите Docker-образ в реестр
Загрузите образ в реестр Artifact Registry, выполнив команду:
docker push <registry_name>.cr.cloud.ru/telegram-bot-example
где:
<registry_name>
— название реестра, которое вы указывали при его создании в Artifact Registry.telegram-bot-example
— название будущего репозитория в Artifact Registry. Название репозитория соответствует имени Docker-образа.
В личном кабинете перейдите в репозиторий Artifact Registry и убедитесь, что образ загружен.
6. Создайте и запустите контейнер
Перейдите в сервис Container Apps через меню в левом верхнем углу экрана.
Нажмите Создать.
Укажите название контейнера и активируйте опцию Публичный адрес.
Нажмите Продолжить.
Выберите реестр, репозиторий и тег Docker-образа, который вы загрузили в Artifact Registry.
Укажите порт контейнера — 5000.
Перейдите на вкладку Переменные и добавьте переменную окружения BOT_TOKEN
. В значение переменной укажите токен, полученный при регистрации бота в BotFather.
Нажмите Продолжить.
Задайте количество ресурсов:
- vCPU и RAM: 0.5 vCPU — 1024 MB
- Минимальное количество экземпляров: 0
- Максимальное количество экземпляров: 1
Нажмите Создать.
Дождитесь, когда контейнер и ревизия перейдут в статус Выполняется.
7. Добавьте webhook в Telegram
Чтобы бот получал сообщения из Telegram, добавьте webhook:
- Откройте любой браузер.
- В адресной строке введите по очереди следующие запросы:
https://api.telegram.org/bot{BOT_TOKEN}/getWebhookInfo
— проверяет, существуют ли webhook:
https://api.telegram.org/bot{BOT_TOKEN}/deleteWebhook
— удаляет существующие webhook:
https://api.telegram.org/bot{BOT_TOKEN}/setWebhook?url={PUBLIC_URL}/{BOT_TOKEN}
— добавляет новый webhook:
где:
{BOT_TOKEN}
— токен, который был сгенерирован при регистрации бота в BotFather.{PUBLIC_URL}
— публичный URL-адрес, который был сгенирован при создании контейнера в Container Apps.
8. Проверьте работу Telegram-бота
Вызовите бота в Telegram по имени пользователя (username) и проверьте его работу, выполнив команду /start
.
👍 Поздравляем, вы только что развернули Telegram-бота в контейнере!