Loading…

Про нас Безкоштовний онлайн форматувальник Dockerfile

Брудний Dockerfile? Зламані відступи, неконсистентні інтервали та нечитабельні ланцюжки RUN? Цей форматувальник Dockerfile використовує рушій на основі dprint (через безпечний бекенд) для нормалізації ваших Dockerfile та Containerfile з чистим, структурованим макетом. Він зберігає ваші інструкції на місці, роблячи файл легшим для перегляду, версіонування та автоматизації в різних середовищах.

Ключові можливості форматувальника Dockerfile

  • Очищує відступи, інтервали та переноси рядків для Dockerfile та Containerfile
  • Нормалізує багаторядкові інструкції RUN з консистентними зворотними слешами та відступами
  • Поважає семантику Dockerfile – без переупорядкування інструкцій, без змін логіки shell
  • Детермінований вивід: той самий вхід та версія ⇒ той самий відформатований Dockerfile
  • Ідеальний супутник для pre-commit хуків, монорепозиторіїв та CI завдань з використанням dprint
  • Веб-редактор з підсвічуванням синтаксису, зручним для diff виводом та діями копіювання/завантаження
  • Добре працює з багатоетапними збірками, аргументами збірки та типовими образами 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'ах
КоментаріЗберігає повнорядкові та вбудовані коментарі поряд з інструкціями# базовий образ для етапу збірки\nFROM 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, вже відформатований.

Поширені Сценарії Використання

Розробка та Платформна Інженерія

  • Уніфікуйте Dockerfiles у мікросервісах перед код-рев'ю
  • Очистіть застарілі Dockerfiles, успадковані від різних команд або шаблонів
  • Стандартизуйте стиль під час міграції образів, версій базової ОС або стратегій збірки
# Типовий багатоетапний Dockerfile (чистий, зручний для перегляду)\nFROM node:18 AS build\nWORKDIR /app\nCOPY package*.json ./\nRUN npm ci && npm cache clean --force\nCOPY . .\nRUN npm run build\n\nFROM node:18-alpine\nWORKDIR /app\nCOPY --from=build /app/dist ./\nCMD ["node", "index.js"]

CI/CD Пайплайни

  • Блокуйте збірки, коли Dockerfiles неправильно відформатовані
  • Автоматично виправляйте стиль у фіча-гілках через pre-commit хуки або CI завдання
  • Підтримуйте читабельність Docker конфігурації у довгоживучих монорепозиторіях та платформних репозиторіях
# Приклад Git pre-commit хука (псевдокод)\n#!/bin/sh\nchanged=$(git diff --cached --name-only --diff-filter=ACM | grep -E 'Dockerfile|Containerfile' || true)\n[ -z "$changed" ] && exit 0\ndprint fmt $changed\ngit add $changed

Онбординг команди та узгодженість

  • Надайте новим членам команди єдиний, чіткий стиль Dockerfile для наслідування
  • Усуньте дебати щодо стилю коду в PR: нехай форматер буде джерелом істини
  • Узгодьте локальне форматування, репозиторні хуки та CI завдання навколо однакової dprint конфігурації
# Приклад фрагменту для docs/onboarding.md\n1. Встановіть dprint локально\n2. Скопіюйте спільний dprint.json з платформного репозиторію\n3. Запустіть `dprint fmt Dockerfile` перед відкриттям pull request

❓ Frequently Asked Questions

Чи змінює форматування процес збірки мого образу?

Ні. Форматер змінює лише пробіли, відступи та переноси рядків. Він зберігає порядок та вміст ваших інструкцій Dockerfile. Якщо ваш оригінальний Dockerfile був валідним, результуюча збірка образу поводитиметься так само.

Чи це те саме, що лінтинг з hadolint?

Ні. Цей інструмент є форматером, а не лінтером. Він виправляє проблеми стилю та розмітки (відступи, пробіли, переноси), але не попереджає про найкращі практики (як використання певних базових образів, healthchecks або розмірів шарів). Для цього поєднуйте його з hadolint або іншим Dockerfile лінтером.

Чи можна застосувати цей стиль в CI?

Так. Ви можете налаштувати dprint з плагіном Dockerfile у вашому репозиторії та запускати `dprint fmt` (або `dprint check`) у вашому CI пайплайні. Таким чином, CI може блокуватися, коли Dockerfiles відхиляються від очікуваного стилю, узгоджуючись з тим, що ви бачите в цьому онлайн форматері.

Чи підтримує він багатоетапні збірки?

Так. Багатоетапні Dockerfiles форматується так само, як і будь-які інші файли. Кожна інструкція 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