ℹ️ Часто при разработке и отладке нужно выполнить одноразовую команду в окружении, которое повторяет рабочую среду. Вместо того чтобы настраивать локальные окружения или запускать сложные контейнеры, можно создать временный контейнер для выполнения конкретной команды и затем сразу удалить его. Это позволяет, например, тестировать скрипты, запускать одноразовые сборки, выполнять миграции и многое другое.
🖥 1. Одноразовые контейнеры
Запустите контейнер для выполнения команды, а после её выполнения автоматически удалите его с помощью флага --rm. Например, чтобы запустить Python-скрипт в контейнере:
docker run --rm -v $(pwd):/app -w /app python:3.9 python script.py
ℹ️ Здесь флаг --rm автоматически удаляет контейнер после выполнения команды. Флаг -v монтирует текущую директорию, чтобы вы могли использовать свои файлы внутри контейнера.
📂 2. Одноразовая отладка и доступ к окружению
Иногда нужно просто зайти в контейнер для проверки файлов, библиотек или системных настроек. Запустите временный контейнер в интерактивном режиме:
docker run --rm -it ubuntu:latest /bin/bash
ℹ️ После выхода из контейнера он будет удалён. Это удобно, если нужно временно проверить команды в свежем окружении.
⚡️ 3. Автоматизированные тесты и проверки
Например, если вам нужно проверить, запускается ли приложение в чистом окружении с нужными зависимостями:
docker run --rm -v $(pwd):/app -w /app node:14 npm test
❔ Этот трюк особенно полезен для CI/CD пайплайнов, где важно, чтобы после выполнения тестов контейнер не занимал место.
🔒 4. Работа с секретами через временные контейнеры
Для выполнения задач с секретами (например, шифрование/расшифровка файлов) можно создать одноразовый контейнер, где секреты хранятся только в течение времени выполнения команды:
docker run --rm -e SECRET_KEY=mysecretkey -v $(pwd):/data -w /data alpine sh -c "echo 'important data' > encrypted_file"
🔐 Это позволяет выполнять задачи с конфиденциальными данными, не оставляя следов в системе.
🐳 5. Комбинирование с docker-compose
Если у вас уже есть docker-compose.yml с необходимыми сервисами, вы можете запускать одноразовые команды на их основе:
docker-compose run --rm app-service python manage.py migrate
❕ Это удобно для выполнения миграций или одноразовых команд в продакшен-образе, без необходимости разворачивать полный стек.
✳️ Это позволяет сократить количество «мусорных» контейнеров, облегчить отладку и даже повысить безопасность при работе с секретами.
tags: #полезно #docker
🧭 @recura_tech


