Предисловие

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

Всем бобра!

Комментарии (5)


  1. g0d1ess
    25.03.2022 15:16
    +2

    Довольно суховато и, в принципе, ничего нового из этой статьи средний обыватель хабра не узнает. Похожие гайды есть на том же Ютубе, там они гораздо подробнее и понятнее. Без хейта, чистая критика.


    1. JerryTheQuad Автор
      25.03.2022 16:02

      Здравствуйте!)

      Спасибо, что оставили отзыв. Ни в коем случае не сержусь, тем более что для меня это первый опыт написания статей на тему программирования. Конечно, я понимаю, что на Хабре сидит много людей с обширным опытом в IT, для которых подобный пост может показаться «жвачкой». Также, как Вы правильно заметили, я упустил многие детали, оставив лишь ссылки на нужные страницы с документацией.

      В будущем буду стараться более подробно рассказывать. Ещё раз спасибо за комментарий и хорошего дня)


      1. lair
        25.03.2022 18:16

        Также, как Вы правильно заметили, я упустил многие детали, оставив лишь ссылки на нужные страницы с документацией.

        Да вы даже и их не оставили. Например:


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

        Какой контейнер-то? Как настраивать?


  1. ArsenAbakarov
    25.03.2022 15:40
    -1

    "Эта инструкция написана кровью и потом." - действительно


  1. Alex_Bogdanovich
    27.03.2022 09:24

    Ну как можно писать про деплой докера без указания специфики. Со стороны стать я - вилами по воде.... Извините, но вы бы хоть привели пример вашего композера, а не просто команду запуска.... Смысл такой статьи на тех ресурсе?