82 подписчика

Docker 7. Разворачивание Telegram-бота в Docker на VPS

Следующий шаг после (или даже в процессе) разработки какого-либо проекта – разворачивание (deploy) на сервере. Для этого будем использовать Docker.

Следующий шаг после (или даже в процессе) разработки какого-либо проекта – разворачивание (deploy) на сервере. Для этого будем использовать Docker.

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

Именно для этого есть Docker. Он упрощает разворачивание проектов на сервере, позволяет контролировать требуемые проекту зависимости и, что пригодится нам в будущем, организует для контейнеров локальную сеть, позволяющую контейнерам общаться, не выходя в интернет, снижая тем самым задержки.

Как установить Docker на Linux, я писал в посте "Docker 2.2 Установка Docker на Linux", но создать контейнер можно и в Windows. Как установить Docker на Windows, я описывал в постах "Docker 1. Подготовка Windows" и "Docker 2.1 Установка Docker Desktop на Windows".

Для разворачивания бота нам необходимо будет проделать следующие действия:

  1. Подготовить Telegram-бота, а именно сделать получение токена и других конфиденциальных данных из переменных окружения вместо прописывания их в коде. Как создать .env-файл описано в посте "AIOgram3 17. Подготовка к разворачиванию на сервере".
  2. Создать Dockerfile - специальный файл, необходимый для создания Docker-образа.
  3. Отправить файлы на сервер.
  4. Запустить бота.

Dockerfile.

Первый пункт списка был выполнен в другом посте, поэтому переходим сразу ко второму.

В корневой директории создадим файл с именем Dockerfile. Именно так: без расширения, в одно слово.

В этом файле описываются инструкции, которые выполняет Docker в момент создания образа.

У нас будет шесть инструкций:

  1. Выбор базового образа.
  2. Определение рабочей директории.
  3. Копирование файла requirements.txt.
  4. Выполнение обновления pip и установки зависимостей.
  5. Копирование файлов проекта.
  6. Выполнение команды запуска проекта.

Полный пост на сайте.

Поддержать проект.