Прежде чем перейти к основному содержанию, хочу предупредить, что текст статьи сгенерирован с помощью искусственного интеллекта. Я стремился сделать материал доступным и информативным, но если вы предпочитаете работать непосредственно с кодом, не стесняйтесь переходить к нему. Весь код снабжен комментариями для лучшего понимания. BotEnvrot на GitHub В современном мире разработки программного обеспечения, где количество и сложность проектов постоянно растут, управление инфраструктурой становится все более трудоемким. Возникает потребность в быстром и гибком доступе к конфигурационным файлам, особенно когда вы находитесь вне офиса. Именно эту проблему решает наш проект: Telegram-бот для управления Docker-контейнерами. С ростом числа проектов увеличивается и сложность их управления. Каждый проект имеет свою уникальную конфигурацию, хранящуюся в env-файлах, и иногда необходимо быстро внести изменения в эти файлы. Например, во время встречи или переговоров, когда доступ к рабочему компьютеру ограничен. Наш Telegram-бот предоставляет удобный интерфейс для управления Docker-контейнерами прямо из вашего смартфона. Благодаря этому, вы можете быстро и безопасно менять конфигурацию ваших проектов, не зависимо от вашего местоположения. Сервер: На сервере хранятся все ваши проекты в директории вида /home/user/git/<имя_проекта>/, где расположены файлы docker-compose.yml и .env. Telegram-бот: Внутри бота имеется каталог CFG, структурированный следующим образом: ./cfg/<имя_проекта>/<вариант_env>. Это позволяет хранить различные варианты конфигураций для каждого проекта. Отправьте команду /start для начала работы. Выберите нужный проект из списка. Выберите нужный env-файл или выполните другую команду (например, остановить или перезапустить контейнер). Здесь мы настраиваем логгирование в зависимости от переменной окружения DEBUG. Это позволяет контролировать уровень детализации логов. Здесь мы инициализируем бота и диспетчера, используя токен и ID администратора из переменных окружения. При получении команды /start, бот проверяет, является ли пользователь администратором. Если да, то предлагает список доступных проектов. Эта функция выполняет команды Docker с помощью модуля subprocess. Она возвращает True, если команда выполнена успешно, и False в противном случае. Здесь мы используем официальный образ Python версии 3.11 как базовый образ. Мы устанавливаем несколько переменных окружения, которые будут использоваться Poetry. Добавляем путь к исполняемому файлу Poetry в переменную окружения PATH. Устанавливаем Poetry с помощью pip. Здесь мы создаем рабочий каталог /app и копируем в него исходный код проекта. Копируем файлы pyproject.toml и poetry.lock в рабочий каталог и устанавливаем зависимости с помощью Poetry. Задаем точку входа для запуска приложения. Здесь мы используем версию 3.8 файла Compose и определяем один сервис bot_env. Контекст сборки установлен на текущую директорию, а Dockerfile указан явно. Образ будет сохранен с именем omeh2003/bot_env и тегом latest. Здесь мы монтируем четыре тома для хранения данных, конфигураций, исходного кода и переменных окружения. Healthcheck выполняет проверку доступности приложения каждые 1 минуту 30 секунд, с таймаутом в 10 секунд и до 3 попыток. Сервис будет автоматически перезапускаться, и порт 5000 хоста будет проброшен на порт 5000 контейнера. Д docker-compose build: Эта команда собирает образ для  приложения на основе информации из файла Dockerfile. Она учитывает все параметры, указанные в разделе build вашего файла docker-compose.yml. docker-compose up: Эта команда запускает  приложение, используя настройки из файла docker-compose.yml. Если образ не был предварительно собран, команда сначала выполнит сборку. Флаг -d позволяет запустить контейнеры в фоновом режиме. docker-compose down: Эта команда останавливает все запущенные контейнеры, удаляет их и также удаляет созданные сети, объявленные в docker-compose.yml. Эти команды значительно упрощают процесс развертывания и управления  приложением, делая его более воспроизводимым и изолированным. BotEnvrot на GitHub Канал в телеграмме Ну и конечно Twitter Информационная безопасность