Loading…

O nas Darmowy Online Formatowanie Dockerfile

Bałagan w Dockerfile? Zepsute wcięcia, niespójne odstępy i nieczytelne łańcuchy RUN? Ten Formatowanie Dockerfile używa silnika opartego na dprint (poprzez bezpieczny backend) do normalizacji Twoich Dockerfile i Containerfile z czystym, uporządkowanym układem. Zachowuje Twoje instrukcje dokładnie na miejscu, jednocześnie czyniąc plik łatwiejszym do przeglądu, wersjonowania i automatyzacji w różnych środowiskach.

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

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

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

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.

TypPrzykładUwagi
DockerfileDockerfile, Dockerfile.prod, Dockerfile.node18Klasyczne pliki budowania obrazów Dockera
ContainerfileContainerfilePliki konfiguracyjne w stylu Podman / Buildah
Fragmenty w tekścieFROM node:18-alpineMał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:

ObszarZachowaniePrzykład
WcięciaNormalizuje wcięcia dla kontynuowanych linii w RUN i innych instrukcjachRUN set -eux; \\n npm ci; \\n npm cache clean --force
Listy i tabliceCzyści odstępy w tablicach w stylu JSON dla CMD/ENTRYPOINT/HEALTHCHECKCMD ["npm", "start"] → CMD ["npm", "start"] (ale ze spójnymi spacjami)
OdstępyUsuwa zbędne spacje wokół instrukcji, zachowując znaczenieENV NODE_ENV=production
Zawijanie liniiMoże przepływać długie łańcuchy RUN dla czytelności bez zmiany kolejnościDługie potoki powłoki stają się łatwiejsze do skanowania i przeglądania w diffach
KomentarzeZachowuje 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:

ElementObsługiwane?Uwagi
Lintowanie w stylu HadolintUżyj hadolint lub podobnych narzędzi do sprawdzania najlepszych praktyk i ostrzeżeń
Skanowanie bezpieczeństwaBrak skanowania CVE lub luk w zabezpieczeniach obrazów lub rejestrów
Budowanie obrazówNie wykonuje docker build ani nie współdziała z Docker Engine
Zmiana kolejności instrukcjiNigdy nie zmienia kolejności instrukcji; zmienia się tylko wcięcia i odstępy
Utrudnianie obrazu bazowegoNie 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 Dockerfile

Najbliż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 Dockerfile

Połą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 $changed

Wdraż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?

Nie. Formatowanie dotyczy tylko białych znaków, wcięć i zawijania linii. Zachowuje kolejność i zawartość instrukcji Twojego pliku Dockerfile. O ile oryginalny plik Dockerfile był prawidłowy, wynikowy obraz powinien zachowywać się tak samo.

Czy to to samo co lintowanie z hadolint?

Nie. To narzędzie jest formatowaniem, nie lintowaniem. Naprawia problemy ze stylem i układem (odstępy, wcięcia, zawijanie), ale nie ostrzega o najlepszych praktykach (jak używanie określonych obrazów bazowych, healthchecks czy rozmiarów warstw). W tym celu połącz je z hadolint lub innym linterem Dockerfile.

Czy mogę wymusić ten styl w CI?

Tak. Możesz skonfigurować dprint z wtyczką Dockerfile w swoim repozytorium i uruchomić `dprint fmt` (lub `dprint check`) w swoim potoku CI. W ten sposób CI może zakończyć się niepowodzeniem, gdy pliki Dockerfile odbiegają od oczekiwanego stylu, zgodnie z tym, co widzisz w tym narzędziu online.

Czy obsługuje wieloetapowe budowanie?

Tak. Wieloetapowe pliki Dockerfile są formatowane jak każdy inny plik. Każda instrukcja FROM, COPY, RUN i ENV jest zachowywana, a układ jest spójny we wszystkich etapach bez zmiany semantyki budowania.

Czy mój plik Dockerfile jest przesyłany na serwer?

W tym narzędziu formatowanie jest wykonywane przez bezpieczny punkt końcowy backendu przy użyciu formatowania opartego na dprint. Twoje źródło jest używane do obliczenia odpowiedzi i nie jest przeznaczone do długotrwałego przechowywania. Jak zawsze, unikaj wklejania wysoce poufnych szczegółów infrastruktury do jakichkolwiek narzędzi online, chyba że kontrolujesz cały stos.

Pro Tips

Best Practice

Uruchamiaj formatowanie automatycznie w CI, aby styl Dockerfile nie różnił się między usługami lub zespołami.

Best Practice

Połącz ten format z linterem, takim jak hadolint, aby objąć zarówno układ, jak i wskazówki dotyczące najlepszych praktyk.

Best Practice

Ustal standardowy szablon wieloetapowego Dockerfile na początku projektu i utrzymuj go sformatowany, aby nowe usługi zachowywały tę samą strukturę.

Best Practice

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