С помощью этого руководства вы запустите Telegram-бота на Python в контейнере.
Вы будете использовать следующие сервисы:
- Artifact Registry для хранения, совместного использования и управления Docker-образами и Helm-чартами. 
- Container Apps — сервис для запуска контейнерных приложений в облаке. Не требует знания Kubernetes и создания виртуальных машин. 
- Систему контроля версий GitVerse. В GitVerse находится готовый образ Telegram-бота. 
Шаги:
Перед началом работы
Если вы уже зарегистрированы, войдите под своей учетной записью.
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. Соберите образ и присвойте тег
Соберите образ и присвойте ему тег, выполнив следующую команду:
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
Где <registry_name> — название реестра, которое вы указывали при его создании в Artifact Registry.
Для создания контейнера Docker-образ должен быть собран под платформу linux/amd64, поэтому в команде используется флаг 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-бота
- Результат