Запуск 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-бота
В 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. Добавьте вебхук в Telegram
Чтобы бот получал сообщения из Telegram, добавьте вебхук:
Откройте любой браузер.
В адресной строке введите по очереди запросы.
Проверьте, существуют ли вебхуки:
https : // api . telegram . org / bot { BOT_TOKEN } / getWebhookInfo{BOT_TOKEN} здесь и далее — токен, который был сгенерирован при регистрации бота в BotFather.
Удалите существующие вебхуки:
https : // api . telegram . org / bot { BOT_TOKEN } / deleteWebhookДобавьте новый вебхук:
https://api.telegram.org/bot{BOT_TOKEN}/setWebhook?url={PUBLIC_URL}/{BOT_TOKEN}{PUBLIC_URL} — публичный URL-адрес, который был сгенерирован при создании контейнера в Container Apps.
8. Проверьте работу Telegram-бота
Вызовите бота в Telegram по имени пользователя (username) и проверьте его работу, выполнив команду /start.

Что дальше
Вы научились разворачивать Telegram-бота в контейнере.
Узнавайте больше о работе с сервисами:
- 1. Подготовьте среду
- 2. Клонируйте или скачайте репозиторий кода c GitVerse
- 3. Зарегистрируйте Telegram-бота
- 4. Соберите образ и присвойте тег
- 5. Загрузите Docker-образ в реестр
- 6. Создайте и запустите контейнер
- 7. Добавьте вебхук в Telegram
- 8. Проверьте работу Telegram-бота
- Что дальше