Как стать автором
Обновить

Деплой Telegram-бота через Docker на Python

Время на прочтение2 мин
Количество просмотров22K

Предисловие

Привет, меня зовут Валерий. Я работаю на игровой сайт AppTime. Как и остальные СМИ из СНГ, мы берём новости из зарубежных источников. За время моей работы их количество сильно возросло: СМИ, Reddit, Twitter, TapTap, инсайдеры, email-рассылки от издателей и разработчиков. Чтобы привлечь аудиторию, автор должен постоянно держать руку на пульсе. Сделать это можно с помощью веб-скрейпинга и Telegram-бота.

До недавних событий мой «Новостной детектив» лежал на сервисе PythonAnywhere. Примерно за $5 в месяц я получал виртуальный сервер с запуском бота через .py файл. Но теперь они не принимают оплату, а так как прямой альтернативы в СНГ я не нашёл, пришлось изощряться. Эта инструкция написана кровью и потом.

Создаём контейнер в Docker

Лого программы Docker
Лого программы Docker

Предположим, что бота вы уже написали и он ждёт своего звёздного часа. Далее надо установить Docker Desktop и зарегистрироваться на Docker Hub. С помощью первого мы создадим контейнер, а второй выступит в роли этакого GitHub. К слову, умельцы уже запостили готовый контейнер, нужно лишь настроить под себя.

Не забудьте создать файл .env с указанием токена своего бота и добавить нужные библиотеки в requirements.txt в формате «Название пакета==его версия».

После настройки и создания файлов прожимаете в командной строке команду «docker-compose up -d» и переходите к следующему пункту. Если выдаёт ошибку про виртуализацию (Hyper-V), следуете инструкциям со StackOverflow.

Переносим контейнер в Docker Hub

На данном этапе вам надо создать репозиторий в Docker Hub. Именно в него мы зальём контейнер и после выгрузим его в виртуальный сервер. Зайдите в командную строку и вбейте «docker images»; вы получите список контейнеров. После этого прописываете следующую команду: docker tag <имя контейнера> <имя репозитория>. Она свяжет это всё дело, после чего смотрим имя нового контейнера через docker images и кидаем его в Docker Hub через docker push <его имя>.

Выбор хоста и виртуального сервера

Рай из серверов
Рай из серверов

Чтобы модераторы и вы, дорогие читатели, не посчитали эту статью огромной рекламой, то посоветую смотреть хоста из СНГ по следующим параметрам: сервер на Ubuntu с предустановленным Docker. Ежемесячная плата мне теперь обходится около 250 рублей в месяц, то есть я научился работать с новыми технологиями и теперь буду экономить на сервере по сравнению с западными решениями.

После оплаты осталось дело за малым: залогиниться через командную строку в качестве админа, подключиться к Docker Hub через команду docker login и при помощи docker pull закачать контейнер с ботом. После команды docker start всё должно заработать. Если вы дошли до этого момента и справились, поздравляю. А если остались вопросы, буду рад ответить в комментариях.

Всем бобра!

Теги:
Хабы:
Всего голосов 13: ↑1 и ↓12-11
Комментарии6

Публикации

Истории

Работа

Python разработчик
118 вакансий
Data Scientist
53 вакансии

Ближайшие события

One day offer от ВСК
Дата16 – 17 мая
Время09:00 – 18:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область