Sprytne Okazje — promocje, kody rabatowe i wyprzedaże

Generator .dockerignore

Zaznacz technologie i skopiuj gotową listę wykluczeń do katalogu z kontekstem budowania.

Bezpieczne (SSL)
Przetwarzanie Lokalne
100% Darmowe
Instrukcja
  • 1
    Wprowadź dane
    Wpisz treść, wklej tekst lub załaduj plik z dysku.
  • 2
    Kliknij przycisk
    Narzędzie natychmiast przetworzy Twoje dane w przeglądarce.
  • 3
    Pobierz wynik
    Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
function runTool() {
  return "Wynik gotowy w 0.1s";
}
Zaznacz technologie i kliknij „Generuj .dockerignore”.

Oceń to narzędzie:

Powiązane narzędzia

Inne narzędzia, które mogą Ci się przydać

Generator .dockerignore — mniejszy kontekst budowania, krótszy build

Generator .dockerignore składa listę wykluczeń z gotowych bloków: zależności, katalog Gita, sekrety, pliki CI, ustawienia edytorów, dokumentacja i śmieci systemowe. Zaznacz technologie, których używa projekt, skopiuj wynik do katalogu z kontekstem budowania i przestań wysyłać do demona Dockera setki megabajtów, które w obrazie nigdy nie wylądują.

Czym jest kontekst budowania

Polecenie docker build . najpierw pakuje wskazany katalog i przesyła go do demona jako kontekst budowania. Dopiero potem wykonują się instrukcje z Dockerfile. Jeśli w katalogu leżą node_modules, vendor i pełna historia repozytorium, każdy build zaczyna się od kilkudziesięciu sekund przepychania plików, których obraz w ogóle nie potrzebuje. Plik .dockerignore działa właśnie na tym etapie: filtruje kontekst, zanim cokolwiek dotrze do demona.

Co warto wykluczyć

GrupaPrzykładowe wzorcePowód
Zależnościnode_modules, vendor, .venvInstalowane wewnątrz obrazu z pliku blokady, nie kopiowane z hosta
Kontrola wersji.git, .gitignoreHistoria repozytorium często waży więcej niż sam kod
Sekrety.env, *.pem, *.keyWarstwy obrazu są jawne dla każdego, kto go pobierze
CI i narzędzia.github, Dockerfile*, docker-compose*.ymlZmiana pipeline'u nie powinna unieważniać cache aplikacji
Dokumentacja i testydocs, tests, *.mdZbędny balast w obrazie produkcyjnym
Systemowe i tymczasowe.DS_Store, Thumbs.db, *.logArtefakty lokalne, inne na każdej maszynie

Jak korzystać z generatora

  1. Zaznacz kafelki odpowiadające stosowi technologicznemu projektu. Możesz łączyć kilka, na przykład PHP i Node.js dla aplikacji Laravel z frontendem budowanym przez Vite.
  2. Kliknij Generuj .dockerignore. Wzorce powtarzające się między grupami trafiają do wyniku tylko raz.
  3. Skopiuj zawartość i zapisz jako .dockerignore w katalogu, który podajesz jako kontekst — zwykle w korzeniu repozytorium.
  4. Uruchom docker build . i porównaj linię Sending build context to Docker daemon przed i po zmianie.

Ten sam projekt potrzebuje zwykle także listy plików pomijanych przez Gita — przygotuje ją generator .gitignore, który operuje na bardzo podobnej składni. Przy wdrożeniu obrazu na klaster przyda się generator manifestu Deployment dla Kubernetes, a przy klasycznym hostingu generator pliku .htaccess. Składnię towarzyszącego pliku docker-compose.yml sprawdzisz walidatorem YAML.

Składnia wzorców i różnice wobec .gitignore

Wzorce są dopasowywane zawsze względem korzenia kontekstu, a nie względem katalogu, w którym leży plik. To pierwsza istotna różnica: w Gicie każdy podkatalog może mieć własny .gitignore, w Dockerze liczy się wyłącznie .dockerignore z korzenia kontekstu. Gwiazdka zastępuje fragment nazwy w jednym segmencie ścieżki, podwójna gwiazdka przechodzi przez dowolną liczbę katalogów, więc **/*.log obejmuje logi na każdym poziomie drzewa. Wykrzyknik tworzy wyjątek, a przy konflikcie wygrywa ostatnia pasująca linia — dlatego *.md w jednej linii i !README.md w następnej zostawi README w kontekście.

Czego nie wykluczać

Pliki blokady zależności muszą zostać w kontekście. Jeśli wykluczysz package-lock.json albo composer.lock, polecenia npm ci i composer install nie mają na czym pracować i build przerwie się błędem albo zainstaluje inne wersje bibliotek niż na środowisku testowym.

Grupa „Dokumentacja” wyklucza tests oraz *.md. To dobry domyślny wybór dla obrazu produkcyjnego, ale jeśli w obrazie uruchamiasz testy albo composer.json mapuje katalog testów przez autoload-dev, usuń ten wzorzec z wyniku.

Cache warstw a kolejność kopiowania

Najwięcej zyskujesz, łącząc .dockerignore z sensowną kolejnością instrukcji: najpierw manifesty zależności, potem instalacja, a kod na końcu:

COPY package.json package-lock.json ./
RUN npm ci
COPY . .
RUN npm run build

Warstwa z npm ci zostaje wtedy w cache, dopóki nie zmienią się manifesty. Bez .dockerignore ten układ i tak niewiele daje, bo lokalny node_modules wpada do kontekstu i unieważnia warstwę COPY . . przy każdej instalacji pakietu na maszynie deweloperskiej.

Najczęściej zadawane pytania

Czy .dockerignore działa jak .gitignore?

Składnia jest bardzo podobna: te same gwiazdki, katalogi i wykrzyknik do wyjątków. Różnice są dwie. Docker czyta tylko jeden plik, z korzenia kontekstu. I nie istnieje tu pojęcie pliku śledzonego, więc zmiana wzorców obowiązuje od pierwszego kolejnego buildu.

Czy wykluczyć Dockerfile z kontekstu?

Można i często się to robi. Docker odczytuje Dockerfile osobno, jeszcze przed spakowaniem kontekstu, więc jego wykluczenie nie psuje builda. Zyskujesz to, że drobna zmiana w Dockerfile lub w plikach Compose nie unieważnia warstwy COPY . ..

Czy .dockerignore zmniejsza gotowy obraz?

Pośrednio, ale wyraźnie. Sam plik nie usuwa niczego z obrazu — decyduje o tym, co w ogóle może zostać skopiowane. Przy instrukcji COPY . . wszystko, co nie zostało wykluczone, wchodzi do warstwy. Wykluczenie .git i node_modules to zazwyczaj kilkaset megabajtów mniej.

Czy jeden plik obsłuży kilka Dockerfile'i?

Domyślnie tak, bo dla całego kontekstu obowiązuje jeden .dockerignore z korzenia. BuildKit pozwala jednak trzymać osobne listy: plik o nazwie NazwaDockerfile.dockerignore obok danego Dockerfile ma pierwszeństwo dla buildów uruchamianych z tym plikiem.

Czy .dockerignore chroni sekrety?

Tylko zapobiegawczo. Blokuje przypadkowe skopiowanie .env czy kluczy prywatnych przez COPY . ., ale nie pomoże, jeśli wskażesz plik wprost, i nie usunie go z warstw obrazu, który już powstał. Poświadczenia przekazuj zmiennymi środowiskowymi w czasie uruchomienia albo mechanizmem sekretów BuildKit, a jeśli klucz raz trafił do opublikowanego obrazu, traktuj go jako ujawniony i wymień.

Zainstaluj Webp.pl Miej narzędzia we własnej kieszeni!