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

Kate

Administrator
Команда форума

Предисловие​

Привет, меня зовут Валерий. Я работаю на игровой сайт 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 всё должно заработать. Если вы дошли до этого момента и справились, поздравляю. А если остались вопросы, буду рад ответить в комментариях.

Всем бобра!

 
Сверху