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