Ключевые возможности форматировщика Dockerfile
- Очищает отступы, пробелы и переносы строк для Dockerfiles и Containerfiles
- Нормализует многострочные инструкции RUN с согласованными обратными слешами и отступами
- Учитывает семантику Dockerfile – без переупорядочивания инструкций, без изменений shell-логики
- Детерминированный вывод: одинаковые входные данные и версия ⇒ одинаковый отформатированный Dockerfile
- Идеальный компаньон для pre-commit хуков, монорепозиториев и CI-задач с использованием dprint
- Веб-редактор с подсветкой синтаксиса, удобным для сравнения выводом и действиями копирования/скачивания
- Хорошо работает с многоэтапными сборками, аргументами сборки и типичными образами Node/.NET/Go
🛠️ Как отформатировать Dockerfile for dockerfile-formatter
1. Вставьте или загрузите ваш Dockerfile
Вставьте ваш Dockerfile в редактор или перетащите Dockerfile/Containerfile из вашего проекта. Небольшие фрагменты (например, отдельный блок FROM/RUN) тоже подойдут, если вы просто хотите поэкспериментировать.
2. Запустите форматирование
Нажмите «Форматировать». Инструмент отправляет ваш исходный код в защищенный бэкенд на основе dprint, который корректирует отступы, пробелы, инструкции в стиле массивов и многострочные цепочки RUN, не затрагивая логику выполнения.
3. Просмотрите, скопируйте или скачайте
Сравните отформатированный результат с вашим исходным файлом. Когда вы будете удовлетворены, скопируйте результат обратно в ваш репозиторий или скачайте отформатированный Dockerfile для прямого коммита.
Технические детали
Поддерживаемые типы файлов
Форматировщик предназначен для инструкций сборки Docker и совместимых файлов сборки контейнеров, используемых в Docker, Podman и аналогичных инструментах.
| Тип | Пример | Примечания |
|---|---|---|
| Dockerfile | Dockerfile, Dockerfile.prod, Dockerfile.node18 | Классические файлы сборки Docker для образов |
| Containerfile | Containerfile | Файлы конфигурации в стиле Podman / Buildah |
| Встроенные фрагменты | FROM node:18-alpine | Небольшие фрагменты или примеры также поддерживаются для быстрых тестов |
Поведение форматирования (в стиле dprint)
Основные поведения базового плагина dprint, используемого этим инструментом:
| Область | Поведение | Пример |
|---|---|---|
| Отступы | Нормализует отступы для продолженных строк в RUN и других инструкциях | RUN set -eux; \\n npm ci; \\n npm cache clean --force |
| Списки и массивы | Очищает пробелы в JSON-подобных массивах для CMD/ENTRYPOINT/HEALTHCHECK | CMD ["npm", "start"] → CMD ["npm", "start"] (но с согласованными пробелами) |
| Пробелы | Удаляет избыточные пробелы вокруг инструкций, сохраняя смысл | ENV NODE_ENV=production |
| Перенос строк | Может переформатировать длинные цепочки RUN для удобочитаемости без изменения порядка | Длинные конвейеры оболочки становятся легче для просмотра и проверки в diff'ах |
| Комментарии | Сохраняет полнострочные и встроенные комментарии рядом с инструкциями | # базовый образ для стадии сборки FROM node:18 AS build |
Нецелевые задачи
Этот форматировщик намеренно ограничен макетом, чтобы вы могли комбинировать его с другими инструментами DevOps:
| Элемент | Обрабатывается? | Примечания |
|---|---|---|
| Линтинг в стиле Hadolint | ❌ | Используйте hadolint или аналогичные инструменты для проверки лучших практик и предупреждений |
| Сканирование безопасности | ❌ | Отсутствует сканирование CVE или уязвимостей образов или реестров |
| Сборка образов | ❌ | Не выполняет docker build и не взаимодействует с Docker Engine |
| Переупорядочивание инструкций | ❌ | Никогда не переупорядочивает инструкции; изменяются только отступы и пробелы |
| Укрепление базового образа | ❌ | Не рекомендует базовые образы; форматирует то, что вы предоставляете |
CLI и CI Эквиваленты
Нравится результат? Отразите такое же поведение локально и в CI с помощью dprint и дополнительных инструментов.
Универсальный (dprint)
Инициализировать dprint и добавить плагин Dockerfile
dprint init
# В dprint.json добавьте:
# {
# "plugins": ["https://plugins.dprint.dev/dockerfile-0.x.wasm"]
# }
# Затем отформатируйте ваши Dockerfiles:
dprint fmt DockerfileНаиболее близкое соответствие этому онлайн-форматировщику, чтобы разработчики и CI использовали один стиль.
Linux/macOS
Линтинг с hadolint (дополняет форматирование)
hadolint DockerfileСочетайте форматирование (стиль) с линтингом (лучшие практики, меньшие образы, healthchecks).
Git / pre-commit
Запустить dprint на измененных Dockerfiles перед коммитом
# .pre-commit-config.yaml (концептуально)
- repo: local
hooks:
- id: dprint-dockerfile
name: dprint Dockerfiles
entry: dprint fmt
language: system
files: "(Dockerfile|Containerfile)$"Гарантирует, что каждый Dockerfile, сливаемый в main, уже отформатирован.
Распространенные сценарии использования
Разработка и платформенная инженерия
- Унифицируйте Dockerfile в микросервисах перед код-ревью
- Очистите устаревшие Dockerfile, унаследованные от разных команд или шаблонов
- Стандартизируйте стиль при миграции образов, версий базовой ОС или стратегий сборки
# Типичный многостадийный Dockerfile (чистый, удобный для ревью)
FROM node:18 AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci && npm cache clean --force
COPY . .
RUN npm run build
FROM node:18-alpine
WORKDIR /app
COPY --from=build /app/dist ./
CMD ["node", "index.js"]CI/CD Пайплайны
- Проваливайте сборки при неправильном форматировании Dockerfile
- Автоматически исправляйте стиль в feature-ветках через pre-commit хуки или CI-задачи
- Поддерживайте читаемость Docker-конфигурации в долгоживущих монорепозиториях и платформенных репозиториях
# Пример Git pre-commit хука (псевдокод)
#!/bin/sh
changed=$(git diff --cached --name-only --diff-filter=ACM | grep -E 'Dockerfile|Containerfile' || true)
[ -z "$changed" ] && exit 0
dprint fmt $changed
git add $changedОнбординг команды и единообразие
- Дайте новым членам команды единый стиль Dockerfile для следования
- Устраните споры о стиле кода в PR: позвольте форматтеру быть источником истины
- Синхронизируйте локальное форматирование, хуки репозитория и CI-задачи вокруг единой конфигурации dprint
# Пример фрагмента для docs/onboarding.md
1. Установите dprint локально
2. Скопируйте общий dprint.json из платформенного репозитория
3. Запустите `dprint fmt Dockerfile` перед открытием пул-реквеста❓ Frequently Asked Questions
Влияет ли форматирование на сборку моего образа?
Это то же самое, что линтинг с hadolint?
Могу ли я применять этот стиль в CI?
Поддерживаются ли многостадийные сборки?
Загружается ли мой Dockerfile на сервер?
Pro Tips
Запускайте форматирование автоматически в CI, чтобы стиль Dockerfile не расходился между сервисами или командами.
Сочетайте этот форматтер с линтером, таким как hadolint, чтобы охватить как оформление, так и рекомендации по лучшим практикам.
Договоритесь о стандартном шаблоне многоэтапного Dockerfile в начале проекта и поддерживайте его форматирование, чтобы новые сервисы следовали той же структуре.
Если вы работаете в монорепозитории, используйте единую конфигурацию dprint, чтобы код приложений, инфраструктурный код и Dockerfile использовали согласованные соглашения.
Additional Resources
Other Tools
- Форматер CSS
- Форматер HTML
- Форматер JavaScript
- Форматер PHP
- Выбор цвета
- Экстрактор спрайтов
- Декодер Base64
- Кодировщик Base64
- Форматер C#
- Форматер CSV
- Форматер Elm
- Форматер ENV
- Форматер Go
- Форматер GraphQL
- Форматер HCL
- Форматер INI
- Форматер JSON
- Форматер LaTeX
- Форматер Markdown
- Форматер Objective-C
- Php Formatter
- Форматер Proto
- Форматер Python
- Форматер Ruby
- Форматер Rust
- Форматер Scala
- Форматер shell-скриптов
- Форматер SQL
- Форматтер SVG
- Форматтер Swift
- Форматтер TOML
- Typescript Formatter
- Форматтер XML
- Форматтер YAML
- Форматтер Yarn
- Минификатор CSS
- Html Minifier
- Javascript Minifier
- Минификатор JSON
- Минификатор XML
- Просмотрщик HTTP-заголовков
- PDF в текст
- Тестер регулярных выражений
- Проверка позиций в SERP
- Поиск Whois