Введение
Docker стал стандартом де-факто для контейнеризации приложений. Согласно отчёту Datadog «Container Adoption in 2025» (datadoghq.com/state-of-containers-2025), более 70% организаций, использующих облачные технологии, применяют Docker. Однако написание эффективных Dockerfile и конфигураций Docker Compose — это искусство, требующее опыта и понимания лучших практик. В этой статье мы собрали 10 готовых промтов (промптов) для AI-ассистентов (например, ChatGPT или Claude), которые помогут вам быстрее создавать, оптимизировать и отлаживать Docker-образы и multi-stage сборки.
1. Промт для создания базового Dockerfile
Задача: Сгенерировать минимальный рабочий Dockerfile для типового веб-приложения на Python (Flask) или Node.js.
Промт:
Напиши Dockerfile для Python Flask приложения. Используй официальный образ python:3.11-slim. Установи зависимости из requirements.txt, скопируй код, открой порт 5000 и запусти приложение через gunicorn. Добавь комментарии к каждой инструкции.
Пример использования:
Вы получите готовый файл с объяснением, почему выбран slim-образ (меньший размер, меньше уязвимостей) и зачем нужен .dockerignore.
2. Промт для оптимизации размера образа (multi-stage)
Задача: Уменьшить размер финального образа, исключив инструменты сборки.
Промт:
Перепиши Dockerfile для Go-приложения, используя multi-stage сборку. Первый этап — сборка бинарника на golang:1.22, второй — минимальный образ scratch или alpine:3.19. Убедись, что в финальный образ попадает только скомпилированный бинарник. Результат — два Dockerfile в одном.
Пример использования:
Multi-stage сборка позволяет уменьшить образ с 800 МБ до 15 МБ. Это критично для CI/CD и быстрого деплоя.
3. Промт для docker-compose.yml с несколькими сервисами
Задача: Быстро настроить окружение для разработки (приложение + база данных + кэш).
Промт:
Создай docker-compose.yml для проекта на Django + PostgreSQL + Redis. Определи сервисы, volumes для данных БД, сеть, переменные окружения. Добавь healthcheck для PostgreSQL. Версию Compose укажи 3.9.
Пример использования:
Вы получаете готовый файл для локальной разработки с одной командой docker compose up -d. В 2026 году Docker Compose V2 является стандартом (интегрирован в Docker CLI).
4. Промт для написания .dockerignore
Задача: Исключить ненужные файлы из контекста сборки.
Промт:
Напиши .dockerignore для Node.js проекта, который исключает node_modules, .git, .env, логи, тесты и документацию. Объясни, почему это ускоряет сборку и уменьшает кэш.
Пример использования:
Без .dockerignore сборка может копировать 100+ МБ лишних файлов. С ним — только исходники.
5. Промт для проверки безопасности образа
Задача: Найти уязвимости и рекомендации по hardening.
Промт:
Проанализируй Dockerfile ниже (приложи свой Dockerfile). Укажи: 1) уязвимости в базовых образах, 2) запуск от root, 3) открытые порты. Предложи исправления: используй non-root пользователя, обнови версии образов.
Пример использования:
Многие образы на Docker Hub содержат критические уязвимости (CVE). Использование USER appuser — обязательная практика безопасности.
6. Промт для автоматической генерации docker-compose тестовой среды
Задача: Создать окружение для интеграционных тестов.
Промт:
Создай docker-compose.test.yml для запуска тестов. Добавь сервис test, который запускает
npm test, зависит от PostgreSQL и Redis, использует ту же сеть. После завершения тестов контейнеры должны автоматически удаляться (--rm).
Пример использования:
В CI (GitHub Actions, GitLab CI) такой файл запускается командой docker compose -f docker-compose.test.yml up --abort-on-container-exit.
7. Промт для кэширования слоёв Dockerfile
Задача: Ускорить повторные сборки.
Промт:
Оптимизируй Dockerfile для Python приложения, чтобы слои кэшировались эффективно. Сначала скопируй requirements.txt и установи зависимости, затем скопируй остальной код. Объясни, почему порядок важен.
Пример использования:
Если код меняется часто, а зависимости редко — кэширование слоя зависимостей сокращает время сборки с 5 минут до 10 секунд.
8. Промт для создания production-версии Dockerfile
Задача: Подготовить образ для продакшена с минимальными зависимостями.
Промт:
Напиши production Dockerfile для React приложения (сборка статики). Используй node:20-alpine для сборки, затем скопируй статические файлы в nginx:alpine. Настрой nginx на раздачу файлов и gzip.
Пример использования:
Финальный образ занимает ~25 МБ вместо 1 ГБ. Это стандартный подход для SPA.
9. Промт для отладки запуска контейнера
Задача: Диагностировать проблемы с запуском.
Промт:
Мой контейнер на Alpine не запускается с ошибкой «exec: "/bin/sh": stat /bin/sh: no such file or directory». Что делать? Предложи шаги: проверка entrypoint, использование bash, пересборка образа.
Пример использования:
Ошибка часто возникает при использовании scratch-образов или неправильном указании SHELL.
10. Промт для миграции с Docker на Docker Compose
Задача: Перевести команды docker run в docker-compose.
Промт:
У меня есть команда: docker run -d --name myapp -p 8080:80 -v /data:/app/data myimage. Преобразуй её в docker-compose.yml. Добавь environment переменные и restart: always.
Пример использования:
Это упрощает управление несколькими контейнерами и делает конфигурацию версионируемой.
Заключение
Эти 10 промтов покрывают 90% повседневных задач Docker-разработчика: от создания первого Dockerfile до оптимизации production-сборок и отладки. Используйте их как шпаргалку, адаптируя под свой стек. Помните: лучший Dockerfile — это тот, который вы понимаете и можете объяснить. Практикуйтесь, и ваши контейнеры будут лёгкими, быстрыми и безопасными.
ASI Biont поддерживает подключение к Docker Hub через API — подробнее на asibiont.com/courses. Это позволяет автоматизировать мониторинг образов и обновлений в вашем пайплайне.
Комментарии