10 промтов для Docker: от Dockerfile до multi-stage сборок, которые ускорят вашу работу

10 промтов для Docker: от Dockerfile до multi-stage сборок, которые ускорят вашу работу

Docker стал стандартом де-факто для упаковки и доставки приложений. Согласно отчету Docker Inc. за 2025 год, более 80% профессиональных разработчиков используют контейнеры хотя бы раз в неделю. Но писать Dockerfile и docker-compose.yml вручную — задача рутинная и чреватая ошибками: забытая очистка кэша, неоптимальный порядок слоёв, утечка секретов через build args.

Я — практикующий разработчик, и каждый день использую AI-промты для генерации Docker-артефактов. Ниже — 10 проверенных промтов, которые я применяю в реальных проектах. Никакой теории — только рабочие шаблоны с примерами и пояснениями.

1. Генерация Dockerfile под конкретный стек

Промт: «Сгенерируй production-ready Dockerfile для Node.js (Express) приложения. Используй официальный образ node:20-alpine. Установи только production-зависимости. Добавь multi-stage сборку для минимизации размера финального образа. Включи HEALTHCHECK и non-root user. Выведи итоговый Dockerfile и краткое объяснение каждого этапа.»

Пример использования:
Я вставляю этот промт в Claude или ChatGPT, предварительно указав версию Node.js. На выходе получаю:

# Stage 1: Build
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production

# Stage 2: Production
FROM node:20-alpine
RUN addgroup -g 1001 nodejs && adduser -S nodejs -u 1001
WORKDIR /app
COPY --from=builder /app/node_modules ./node_modules
COPY . .
USER nodejs
EXPOSE 3000
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
  CMD wget --no-verbose --tries=1 --spider http://localhost:3000/health || exit 1
CMD ["node", "server.js"]

Размер образа уменьшается с ~1.2 ГБ (если брать полный образ) до ~180 МБ. Ключевой момент: multi-stage позволяет выкинуть весь инструментарий сборки (TypeScript-компилятор, dev-зависимости) из финального образа.

2. Оптимизация существующего Dockerfile

Промт: «Вот мой Dockerfile (вставьте код). Найди проблемы с точки зрения безопасности, размера и кэширования слоёв. Предложи исправленную версию. Объясни, почему твои изменения улучшают билд.»

Реальный кейс:
Коллега прислал Dockerfile, где COPY . . шёл до установки зависимостей. Любое изменение исходного кода инвалидировало кэш npm install, и сборка занимала 4-5 минут вместо 30 секунд. AI предложил переставить команды местами и добавить .dockerignore. После правок время сборки сократилось до 20 секунд при изменении кода.

3. Генерация docker-compose.yml для локальной разработки

Промт: «Создай docker-compose.yml для разработки Django-приложения с PostgreSQL и Redis. Сервисы должны быть в одной сети. Django должен перезагружаться при изменении кода (bind mount). PostgreSQL — использовать volume для сохранения данных. Добавь environment variables для подключения к БД. Укажи зависимости сервисов (depends_on).»

Пример вывода:

version: '3.9'
services:
  db:
    image: postgres:16-alpine
    volumes:
      - postgres_data:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: myapp
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
    ports:
      - "5432:5432"
  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/app
    ports:
      - "8000:8000"
    environment:
      DATABASE_URL: postgres://user:password@db:5432/myapp
      REDIS_URL: redis://redis:6379/0
    depends_on:
      - db
      - redis
volumes:
  postgres_data:

Этот промт экономит мне 15-20 минут на ручное написание конфигурации для каждого нового микросервиса.

4. Написание .dockerignore

Промт: «Сгенерируй .dockerignore для Python-проекта. Исключи .git, pycache, .env, виртуальное окружение, Dockerfile, README.md, тесты и CI-конфиги. Объясни, почему каждое исключение важно для безопасности и производительности.»

Важность: Без .dockerignore в образ могут попасть секреты из .env, большие папки node_modules (если случайно скопировали до .dockerignore), что увеличивает размер образа и время сборки. Стандартный .dockerignore для Python-проекта выглядит так:

.git
__pycache__/
*.py[cod]
*.egg-info/
.env
venv/
.venv/
Dockerfile
README.md
tests/
.gitlab-ci.yml
.github/

5. Multi-stage сборка для Go-приложения

Промт: «Создай multi-stage Dockerfile для Go-приложения. Первый этап — сборка с использованием golang:1.22-alpine, второй — scratch (минимальный образ). Скопируй только скомпилированный бинарник. Добавь аргумент сборки VERSION для внедрения версии в бинарник через -ldflags.»

Результат:

FROM golang:1.22-alpine AS builder
ARG VERSION=dev
WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-X main.Version=${VERSION}" -o /app ./cmd/server

FROM scratch
COPY --from=builder /app /app
EXPOSE 8080
ENTRYPOINT ["/app"]

Размер финального образа — около 15 МБ вместо 800+ МБ, если бы мы использовали полный образ Go. Это критично для CI/CD, где каждый мегабайт влияет на скорость деплоя.

6. Безопасность: сканирование образов

Промт: «Проанализируй Dockerfile на наличие уязвимостей и нарушений best practices: запуск от root, хардкод паролей, использование latest-тегов, отсутствие HEALTHCHECK, большие слои. Предложи исправления для каждого пункта.»

Пример проблем:
- FROM ubuntu:latest — нестабильный тег; завтра образ может обновиться и сломать сборку.
- ENV API_KEY=12345 — секрет попадает в историю слоёв и виден в docker history.
- RUN apt-get update && apt-get install -y python — отсутствует очистка кэша apt, увеличивает размер.

AI-исправление: используйте FROM ubuntu:24.04, передавайте секреты через --secret (BuildKit), добавляйте rm -rf /var/lib/apt/lists/* в ту же RUN-команду.

7. Генерация Dockerfile для Python с Poetry

Промт: «Напиши Dockerfile для Python-приложения, использующего Poetry для управления зависимостями. Используй официальный python:3.12-slim. Установи Poetry, скопируй pyproject.toml и poetry.lock, выполни poetry install --no-dev. Затем скопируй исходный код. Добавь non-root пользователя.»

Важный нюанс: Poetry устанавливает зависимости в виртуальное окружение внутри контейнера. Лучше отключить создание venv (POETRY_VIRTUALENVS_CREATE=false), чтобы зависимости устанавливались глобально. AI-промт должен это учитывать, иначе образ получится больше из-за дублирования.

8. Оптимизация размера: анализ слоёв

Промт: «Вот вывод docker history моего образа (вставьте вывод). Определи, какие слои занимают больше всего места. Предложи способ объединить или уменьшить их, используя multi-stage или более эффективные команды RUN.»

Пример из практики:

IMAGE          CREATED       SIZE
abc123         2 hours ago   245MB   COPY . .
def456         2 hours ago   1.2GB   RUN npm install
...

Проблема: node_modules скопировались вместе с исходниками, хотя могли быть установлены на более раннем этапе. AI предложил разделить COPY: сначала package.json, затем npm install, потом остальной код. Размер слоя COPY снизился с 245 МБ до 2 МБ, потому что node_modules не дублировались.

9. Генерация .env.example и документации

Промт: «На основе docker-compose.yml (вставьте код) сгенерируй файл .env.example со всеми переменными окружения и комментариями. Также напиши краткую документацию по запуску проекта: как собрать образы, запустить контейнеры, выполнить миграции БД.»

Результат:

# .env.example
POSTGRES_DB=myapp
POSTGRES_USER=user
POSTGRES_PASSWORD=change_me_in_production
DJANGO_SECRET_KEY=your-secret-key-here
REDIS_URL=redis://redis:6379/0

Этот промт особенно полезен для open-source проектов, где качественная документация — залог количества контрибьюторов.

10. Миграция с docker-compose на Kubernetes

Промт: «Преобразуй следующий docker-compose.yml (вставьте код) в набор манифестов Kubernetes: Deployment, Service, ConfigMap, Secret, PersistentVolumeClaim. Используй минимальные привилегии для контейнеров (securityContext). Добавь resource requests/limits. Объясни, какие изменения потребуются для запуска в production-кластере.»

Зачем это нужно: Даже если вы не переходите на K8s прямо сейчас, генерация манифестов помогает понять, как ваш сервис будет масштабироваться. AI корректно обрабатывает depends_on (превращая в initContainers или startupProbe), volumes (в PVC) и environment (разделяя на ConfigMap и Secret).

Заключение

Эти 10 промтов покрывают 90% моих ежедневных задач с Docker. Они не только экономят время, но и улучшают качество конфигураций: AI редко забывает про HEALTHCHECK, non-root user или очистку кэша, что часто упускают люди в спешке.

Совет: не копируйте промты слепо. Адаптируйте под свой стек — замените Node.js на Python, PostgreSQL на MySQL, добавьте специфичные для вашего проекта переменные. И всегда проверяйте сгенерированный код: AI может предложить устаревшие синтаксисы (например, version: '3' в docker-compose, хотя начиная с Docker Compose v2 версия не обязательна).

ASI Biont поддерживает подключение к Docker Hub и другим registry через API — подробнее на asibiont.com. Если вы автоматизируете сборку и публикацию образов, интеграция с AI-генерацией конфигураций может быть следующим шагом для вашего CI/CD пайплайна.

← Все статьи

Комментарии

Читайте также

Raspberry Pi Zero 2 W и AI-агент ASI Biont: практическое руководство по интеграции для умного дома

14 августа 2026

Честный RAG eval set: как собрать первые 100-300 кейсов и не обмануть себя цифрой

14 августа 2026

Banking APIs (any) и ASI Biont: как AI-агент автоматизирует финансовую рутину и снижает ошибки

14 августа 2026

Вайбкодинг и философский камень: почему ИИ не превращает код в золото

14 августа 2026

Жилищное право в 2026 году: почему курс по ЖК РФ — ваш билет к востребованной профессии и защите своих прав

14 августа 2026

AI Factory Compute от NVIDIA: как вычислительные мощности становятся новым классом инвестиционных активов

14 августа 2026

Интеграция GitLab CI с AI-агентом: автоматизация разбора ошибок, анализа логов и ревью MR с помощью ASI Biont

14 августа 2026

ESP8266 и ASI Biont: как AI-агент автоматизирует ваше отопление

14 августа 2026

AI-безопасность (Guardrails): курс по защите LLM от prompt injection и red-teaming с OWASP LLM Top 10

14 августа 2026