Kluczowe Funkcje Formatowania Dockerfile
- Czyści wcięcia, odstępy i zawijanie linii dla Dockerfile i Containerfile
- Normalizuje wieloliniowe instrukcje RUN ze spójnymi ukośnikami i wcięciami
- Szanuje semantykę Dockerfile – bez zmiany kolejności instrukcji, bez zmian logiki powłoki
- Deterministyczne wyjście: ten sam wejście i wersja ⇒ ten sam sformatowany Dockerfile
- Idealny towarzysz dla haków pre-commit, monorepo i zadań CI używających dprint
- Edytor webowy z podświetlaniem składni, przyjaznym dla diff wyjściem i akcjami kopiowania/pobierania
- Działa dobrze z budowaniem wieloetapowym, argumentami budowania i typowymi obrazami Node/.NET/Go
🛠️ Jak Sformatować Dockerfile for dockerfile-formatter
1. Wklej lub Prześlij Swój Dockerfile
Wklej swój Dockerfile do edytora lub upuść plik Dockerfile/Containerfile z projektu. Małe fragmenty (jak pojedynczy blok FROM/RUN) również działają, jeśli chcesz tylko poeksperymentować.
2. Uruchom Formatowanie
Kliknij "Formatuj". Narzędzie wysyła twój kod do bezpiecznego zaplecza opartego na dprint, które dostosowuje wcięcia, odstępy, instrukcje w stylu tablicowym i wieloliniowe łańcuchy RUN bez ingerencji w logikę wykonania.
3. Przejrzyj, Skopiuj lub Pobierz
Porównaj sformatowane wyjście z oryginalnym plikiem. Gdy będziesz zadowolony, skopiuj wynik z powrotem do repozytorium lub pobierz sformatowany Dockerfile, aby od razu go zatwierdzić.
Szczegóły Techniczne
Obsługiwane Typy Plików
Formatowanie dotyczy instrukcji budowania Dockera i kompatybilnych plików budowania kontenerów używanych w Docker, Podman i podobnych narzędziach.
| Typ | Przykład | Uwagi |
|---|---|---|
| Dockerfile | Dockerfile, Dockerfile.prod, Dockerfile.node18 | Klasyczne pliki budowania obrazów Dockera |
| Containerfile | Containerfile | Pliki konfiguracyjne w stylu Podman / Buildah |
| Fragmenty w tekście | FROM node:18-alpine | Małe fragmenty lub przykłady są również obsługiwane do szybkich testów |
Zachowanie Formatowania (styl dprint)
Ogólne zachowania podstawowej wtyczki dprint używanej przez to narzędzie:
| Obszar | Zachowanie | Przykład |
|---|---|---|
| Wcięcia | Normalizuje wcięcia dla kontynuowanych linii w RUN i innych instrukcjach | RUN set -eux; \\n npm ci; \\n npm cache clean --force |
| Listy i tablice | Czyści odstępy w tablicach w stylu JSON dla CMD/ENTRYPOINT/HEALTHCHECK | CMD ["npm", "start"] → CMD ["npm", "start"] (ale ze spójnymi spacjami) |
| Odstępy | Usuwa zbędne spacje wokół instrukcji, zachowując znaczenie | ENV NODE_ENV=production |
| Zawijanie linii | Może przepływać długie łańcuchy RUN dla czytelności bez zmiany kolejności | Długie potoki powłoki stają się łatwiejsze do skanowania i przeglądania w diffach |
| Komentarze | Zachowuje komentarze pełnoliniowe i w tekście obok instrukcji | # obraz bazowy dla etapu budowania FROM node:18 AS build |
Cele niezamierzone
Ten formatownik jest celowo ograniczony do układu, aby można go było łączyć z innymi narzędziami DevOps:
| Element | Obsługiwane? | Uwagi |
|---|---|---|
| Lintowanie w stylu Hadolint | ❌ | Użyj hadolint lub podobnych narzędzi do sprawdzania najlepszych praktyk i ostrzeżeń |
| Skanowanie bezpieczeństwa | ❌ | Brak skanowania CVE lub luk w zabezpieczeniach obrazów lub rejestrów |
| Budowanie obrazów | ❌ | Nie wykonuje docker build ani nie współdziała z Docker Engine |
| Zmiana kolejności instrukcji | ❌ | Nigdy nie zmienia kolejności instrukcji; zmienia się tylko wcięcia i odstępy |
| Utrudnianie obrazu bazowego | ❌ | Nie rekomenduje obrazów bazowych; formatuje to, co podasz |
Ekwiwalenty CLI i CI
Podoba ci się wynik? Odbij to samo zachowanie lokalnie i w CI za pomocą dprint i narzędzi uzupełniających.
Uniwersalne (dprint)
Zainicjuj dprint i dodaj wtyczkę Dockerfile
dprint init
# W dprint.json dodaj:
# {
# "plugins": ["https://plugins.dprint.dev/dockerfile-0.x.wasm"]
# }
# Następnie sformatuj swoje Dockerfile:
dprint fmt DockerfileNajbliższy odpowiednik tego formatownika online, więc programiści i CI używają tego samego stylu.
Linux/macOS
Lintowanie za pomocą hadolint (uzupełnia formatowanie)
hadolint DockerfilePołącz formatowanie (styl) z lintowaniem (najlepsze praktyki, mniejsze obrazy, healthchecks).
Git / pre-commit
Uruchom dprint na zmienionych Dockerfile przed commitem
# .pre-commit-config.yaml (koncepcyjnie)
- repo: local
hooks:
- id: dprint-dockerfile
name: dprint Dockerfiles
entry: dprint fmt
language: system
files: "(Dockerfile|Containerfile)$"Gwarantuje, że każdy Dockerfile scalony do main jest już sformatowany.
Typowe przypadki użycia
Inżynieria deweloperska i platformowa
- Normalizuj pliki Dockerfile w mikrousługach przed przeglądem kodu
- Oczyść dziedziczone pliki Dockerfile od wielu zespołów lub szablonów
- Standaryzuj styl podczas migracji obrazów, wersji systemu bazowego lub strategii budowania
# Typowy wieloetapowy plik Dockerfile (czysty, przyjazny do przeglądu)
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"]Potoki CI/CD
- Blokuj budowanie, gdy pliki Dockerfile nie są poprawnie sformatowane
- Automatycznie poprawiaj styl na gałęziach funkcji za pomocą haków pre-commit lub zadań CI
- Utrzymuj konfigurację Docker czytelną w długożyjących monorepozytoriach i repozytoriach platform
# Przykład haka Git pre-commit (pseudo-kod)
#!/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 $changedWdrażanie zespołu i spójność
- Daj nowym członkom zespołu jeden, określony styl pliku Dockerfile do naśladowania
- Usuń debaty o stylu kodu z PR: pozwól formatowi być źródłem prawdy
- Wyrównaj lokalne formatowanie, haki repozytorium i zadania CI wokół tej samej konfiguracji dprint
# Przykładowy fragment dla docs/onboarding.md
1. Zainstaluj dprint lokalnie
2. Skopiuj wspólny dprint.json z repozytorium platformy
3. Uruchom `dprint fmt Dockerfile` przed otwarciem pull request❓ Frequently Asked Questions
Czy formatowanie zmienia sposób budowania mojego obrazu?
Czy to to samo co lintowanie z hadolint?
Czy mogę wymusić ten styl w CI?
Czy obsługuje wieloetapowe budowanie?
Czy mój plik Dockerfile jest przesyłany na serwer?
Pro Tips
Uruchamiaj formatowanie automatycznie w CI, aby styl Dockerfile nie różnił się między usługami lub zespołami.
Połącz ten format z linterem, takim jak hadolint, aby objąć zarówno układ, jak i wskazówki dotyczące najlepszych praktyk.
Ustal standardowy szablon wieloetapowego Dockerfile na początku projektu i utrzymuj go sformatowany, aby nowe usługi zachowywały tę samą strukturę.
Jeśli pracujesz w monorepo, udostępnij jedną konfigurację dprint, aby kod aplikacji, kod infrastruktury i Dockerfile używały spójnych konwencji.
Additional Resources
Other Tools
- Upiększacz CSS
- Upiększacz HTML
- Upiększacz JavaScript
- Upiększacz PHP
- Wybór koloru
- Ekstraktor sprite'ów
- Dekoder Base64
- Koder Base64
- Formatowanie C#
- Formatowanie CSV
- Formatowanie Elm
- Formatowanie ENV
- Formatowanie Go
- Formatowanie GraphQL
- Formatowanie HCL
- Formatowanie INI
- Formatowanie JSON
- Formatowanie LaTeX
- Formatowanie Markdown
- Formatowanie Objective-C
- Php Formatter
- Formatowanie Proto
- Formatowanie Python
- Formatowanie Ruby
- Formatowanie Rust
- Formatowanie Scala
- Formatowanie skryptów powłoki
- Formatowanie SQL
- Formatowanie SVG
- Formatowanie Swift
- Formatowanie TOML
- Typescript Formatter
- Formatowanie XML
- Formatowanie YAML
- Formatowanie Yarn
- Minifikator CSS
- Html Minifier
- Javascript Minifier
- Minifikator JSON
- Minifikator XML
- Przegląd nagłówków HTTP
- PDF do tekstu
- Tester wyrażeń regularnych
- Sprawdzanie pozycji w SERP
- Wyszukiwanie Whois