Следующий шаг после (или даже в процессе) разработки какого-либо проекта – разворачивание (deploy) на сервере. Для этого будем использовать Docker.
Запустить бота, сайт или любой другой проект на сервере можно и без контейнеризации. Проблем не будет, если проект всего один. Когда проектов на сервере несколько, становится труднее контролировать версионность и решать конфликты зависимостей.
Именно для этого есть Docker. Он упрощает разворачивание проектов на сервере, позволяет контролировать требуемые проекту зависимости и, что пригодится нам в будущем, организует для контейнеров локальную сеть, позволяющую контейнерам общаться, не выходя в интернет, снижая тем самым задержки.
Как установить Docker на Linux, я писал в посте "Docker 2.2 Установка Docker на Linux", но создать контейнер можно и в Windows. Как установить Docker на Windows, я описывал в постах "Docker 1. Подготовка Windows" и "Docker 2.1 Установка Docker Desktop на Windows".
Для разворачивания бота нам необходимо будет проделать следующие действия:
- Подготовить Telegram-бота, а именно сделать получение токена и других конфиденциальных данных из переменных окружения вместо прописывания их в коде. Как создать .env-файл описано в посте "AIOgram3 17. Подготовка к разворачиванию на сервере".
- Создать Dockerfile - специальный файл, необходимый для создания Docker-образа.
- Отправить файлы на сервер.
- Запустить бота.
Dockerfile.
Первый пункт списка был выполнен в другом посте, поэтому переходим сразу ко второму.
В корневой директории создадим файл с именем Dockerfile. Именно так: без расширения, в одно слово.
В этом файле описываются инструкции, которые выполняет Docker в момент создания образа.
У нас будет шесть инструкций:
- Выбор базового образа.
- Определение рабочей директории.
- Копирование файла requirements.txt.
- Выполнение обновления pip и установки зависимостей.
- Копирование файлов проекта.
- Выполнение команды запуска проекта.