Loading…

О сервисе Бесплатный онлайн-форматировщик Dockerfile

Грязный Dockerfile? Сломанные отступы, несогласованные пробелы и нечитаемые цепочки RUN? Этот форматировщик Dockerfile использует движок на базе dprint (через защищенный бэкенд) для нормализации ваших Dockerfiles и Containerfiles с чистым, продуманным макетом. Он сохраняет ваши инструкции на месте, делая файл удобнее для проверки, версионирования и автоматизации в разных средах.

Ключевые возможности форматировщика Dockerfile

  • Очищает отступы, пробелы и переносы строк для Dockerfiles и Containerfiles
  • Нормализует многострочные инструкции RUN с согласованными обратными слешами и отступами
  • Учитывает семантику Dockerfile – без переупорядочивания инструкций, без изменений shell-логики
  • Детерминированный вывод: одинаковые входные данные и версия ⇒ одинаковый отформатированный Dockerfile
  • Идеальный компаньон для pre-commit хуков, монорепозиториев и CI-задач с использованием dprint
  • Веб-редактор с подсветкой синтаксиса, удобным для сравнения выводом и действиями копирования/скачивания
  • Хорошо работает с многоэтапными сборками, аргументами сборки и типичными образами Node/.NET/Go

🛠️ Как отформатировать Dockerfile for dockerfile-formatter

1

1. Вставьте или загрузите ваш Dockerfile

Вставьте ваш Dockerfile в редактор или перетащите Dockerfile/Containerfile из вашего проекта. Небольшие фрагменты (например, отдельный блок FROM/RUN) тоже подойдут, если вы просто хотите поэкспериментировать.

2

2. Запустите форматирование

Нажмите «Форматировать». Инструмент отправляет ваш исходный код в защищенный бэкенд на основе dprint, который корректирует отступы, пробелы, инструкции в стиле массивов и многострочные цепочки RUN, не затрагивая логику выполнения.

3

3. Просмотрите, скопируйте или скачайте

Сравните отформатированный результат с вашим исходным файлом. Когда вы будете удовлетворены, скопируйте результат обратно в ваш репозиторий или скачайте отформатированный Dockerfile для прямого коммита.

Технические детали

Поддерживаемые типы файлов

Форматировщик предназначен для инструкций сборки Docker и совместимых файлов сборки контейнеров, используемых в Docker, Podman и аналогичных инструментах.

ТипПримерПримечания
DockerfileDockerfile, Dockerfile.prod, Dockerfile.node18Классические файлы сборки Docker для образов
ContainerfileContainerfileФайлы конфигурации в стиле Podman / Buildah
Встроенные фрагментыFROM node:18-alpineНебольшие фрагменты или примеры также поддерживаются для быстрых тестов

Поведение форматирования (в стиле dprint)

Основные поведения базового плагина dprint, используемого этим инструментом:

ОбластьПоведениеПример
ОтступыНормализует отступы для продолженных строк в RUN и других инструкцияхRUN set -eux; \\n npm ci; \\n npm cache clean --force
Списки и массивыОчищает пробелы в JSON-подобных массивах для CMD/ENTRYPOINT/HEALTHCHECKCMD ["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

Влияет ли форматирование на сборку моего образа?

Нет. Форматтер затрагивает только пробелы, отступы и переносы строк. Он сохраняет порядок и содержание инструкций вашего Dockerfile. Пока исходный Dockerfile был валидным, результирующая сборка образа будет вести себя так же.

Это то же самое, что линтинг с hadolint?

Нет. Этот инструмент — форматтер, а не линтер. Он исправляет проблемы стиля и расположения (пробелы, отступы, переносы), но не предупреждает о лучших практиках (например, использовании определённых базовых образов, healthchecks или размерах слоёв). Для этого сочетайте его с hadolint или другим линтером для Dockerfile.

Могу ли я применять этот стиль в CI?

Да. Вы можете настроить dprint с плагином Dockerfile в вашем репозитории и запускать `dprint fmt` (или `dprint check`) в вашем CI-пайплайне. Таким образом, CI будет падать, когда Dockerfile отклоняются от ожидаемого стиля, соответствуя тому, что вы видите в этом онлайн-форматтере.

Поддерживаются ли многостадийные сборки?

Да. Многостадийные Dockerfile форматируются так же, как и любые другие файлы. Каждая инструкция FROM, COPY, RUN и ENV сохраняется, а расположение становится единообразным по всем стадиям без изменения семантики сборки.

Загружается ли мой Dockerfile на сервер?

Для этого инструмента форматирование выполняется через защищённый бэкенд-эндпоинт с использованием форматтера на основе dprint. Ваш исходный код используется для вычисления ответа и не предназначен для долгосрочного хранения. Как всегда, избегайте вставки высококонфиденциальных деталей инфраструктуры в любые онлайн-инструменты, если вы не контролируете весь стек.

Pro Tips

Best Practice

Запускайте форматирование автоматически в CI, чтобы стиль Dockerfile не расходился между сервисами или командами.

Best Practice

Сочетайте этот форматтер с линтером, таким как hadolint, чтобы охватить как оформление, так и рекомендации по лучшим практикам.

Best Practice

Договоритесь о стандартном шаблоне многоэтапного Dockerfile в начале проекта и поддерживайте его форматирование, чтобы новые сервисы следовали той же структуре.

Best Practice

Если вы работаете в монорепозитории, используйте единую конфигурацию dprint, чтобы код приложений, инфраструктурный код и Dockerfile использовали согласованные соглашения.

Additional Resources

Other Tools