Предисловие
Привет, меня зовут Валерий. Я работаю на игровой сайт AppTime. Как и остальные СМИ из СНГ, мы берём новости из зарубежных источников. За время моей работы их количество сильно возросло: СМИ, Reddit, Twitter, TapTap, инсайдеры, email-рассылки от издателей и разработчиков. Чтобы привлечь аудиторию, автор должен постоянно держать руку на пульсе. Сделать это можно с помощью веб-скрейпинга и Telegram-бота.
До недавних событий мой «Новостной детектив» лежал на сервисе PythonAnywhere. Примерно за $5 в месяц я получал виртуальный сервер с запуском бота через .py файл. Но теперь они не принимают оплату, а так как прямой альтернативы в СНГ я не нашёл, пришлось изощряться. Эта инструкция написана кровью и потом.
Создаём контейнер в Docker
![Лого программы Docker Лого программы Docker](https://habrastorage.org/getpro/habr/upload_files/02d/fcb/03c/02dfcb03c65361dff8ba98824e7eddc9.jpg)
Предположим, что бота вы уже написали и он ждёт своего звёздного часа. Далее надо установить 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 <его имя>.
Выбор хоста и виртуального сервера
![Рай из серверов Рай из серверов](https://habrastorage.org/getpro/habr/upload_files/3e0/c7c/f13/3e0c7cf13d5c4fb6a4669f3b9804f892.jpg)
Чтобы модераторы и вы, дорогие читатели, не посчитали эту статью огромной рекламой, то посоветую смотреть хоста из СНГ по следующим параметрам: сервер на Ubuntu с предустановленным Docker. Ежемесячная плата мне теперь обходится около 250 рублей в месяц, то есть я научился работать с новыми технологиями и теперь буду экономить на сервере по сравнению с западными решениями.
После оплаты осталось дело за малым: залогиниться через командную строку в качестве админа, подключиться к Docker Hub через команду docker login и при помощи docker pull закачать контейнер с ботом. После команды docker start всё должно заработать. Если вы дошли до этого момента и справились, поздравляю. А если остались вопросы, буду рад ответить в комментариях.
Всем бобра!