Sprytne Okazje — promocje, kody rabatowe i wyprzedaże

Generator Dockerfile

Wybierz stos i wersję, a otrzymasz Dockerfile z cache warstw, użytkownikiem nie-root i healthcheckiem.

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";
}
Wybierz stos i kliknij „Generuj Dockerfile”, aby otrzymać przykładowy plik.

Oceń to narzędzie:

Powiązane narzędzia

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

Generator Dockerfile — szkielet obrazu dla PHP-FPM, Node.js i Pythona

Generator Dockerfile składa plik budujący obraz kontenera dla czterech najczęstszych stosów: PHP-FPM (na przykład Laravel), PHP CLI z wbudowanym serwerem, Node.js i Python. Wybierasz wersję środowiska oraz port, a narzędzie układa instrukcje w kolejności, która nie psuje cache warstw, dokłada użytkownika innego niż root i gotowy HEALTHCHECK.

Co robi to narzędzie

Generator nie analizuje Twojego projektu — składa sprawdzony szablon z pól, które zaznaczysz. Dla PHP-FPM instaluje rozszerzenia przez docker-php-ext-install razem z bibliotekami nagłówkowymi i usuwa łańcuch narzędzi kompilacji w tej samej warstwie, żeby obraz został mały. Przy opcji Laravel dopisuje cache tras i widoków oraz prawa do storage. Dla Node.js ustawia NODE_ENV=production, a dla Pythona zakłada konto appuser, bo obraz -slim nie ma użytkownika aplikacyjnego.

Instrukcje w wygenerowanym pliku

InstrukcjaRola w obrazieUwaga praktyczna
FROMObraz bazowy z konkretną wersją językaNie używaj tagu latest — build przestaje być powtarzalny
RUNPakiety systemowe i instalacja zależnościKażde RUN to osobna warstwa, więc łącz polecenia
COPYNajpierw manifesty, potem kod aplikacji--chown od razu ustawia właściciela plików
USERPrzełączenie na konto bez uprawnień rootaPo wszystkich instalacjach, przed CMD
HEALTHCHECKSonda, po której orkiestrator poznaje stan konteneraUstaw --start-period, by nie ubijać wolnego startu
CMDProces główny konteneraForma tablicowa omija shell i przekazuje sygnały

Jak korzystać z generatora

  1. Wybierz bazowy obraz. PHP-FPM pasuje do aplikacji za serwerem HTTP, PHP CLI do skryptów i szybkich testów, Node.js i Python do własnych serwisów.
  2. Ustaw wersję środowiska — lista zawiera tylko wydania z aktualnymi obrazami oficjalnymi.
  3. Podaj port, na którym nasłuchuje aplikacja. Dla PHP-FPM pole jest ukryte, bo FPM zawsze wystawia 9000.
  4. Kliknij Generuj Dockerfile i zapisz wynik jako Dockerfile w katalogu głównym repozytorium.
  5. Dodaj .dockerignore, bo inaczej COPY . . wciągnie do obrazu katalog zależności i lokalną konfigurację. Listę wzorców podpowie generator .gitignore.
docker build -t moja-aplikacja:1.0 .
docker run --rm -d -p 8080:8080 --env-file .env --name moja-aplikacja moja-aplikacja:1.0
docker ps --filter name=moja-aplikacja

Cache warstw i kolejność instrukcji

Docker zapisuje wynik każdej instrukcji jako warstwę i używa jej ponownie, dopóki nie zmieni się nic, od czego ta warstwa zależy. Dlatego manifesty (composer.json, package*.json, requirements.txt) kopiujemy przed kodem: poprawka w kontrolerze nie unieważnia wtedy instalacji pakietów i build kończy się w sekundach zamiast w minutach. Ważne jest też scalanie poleceń — pakiety kompilacji dodane w jednym RUN i usunięte w kolejnym nadal zajmują miejsce, bo warstwa z instalacją została już zapisana.

Użytkownik nie-root i sekrety

Domyślnie proces w kontenerze działa jako root, a to znaczy, że dowolny błąd w aplikacji daje atakującemu pełne prawa w systemie plików obrazu. Wygenerowany plik przełącza się na www-data, node albo appuser dopiero po zakończeniu instalacji, bo wcześniej brakowałoby uprawnień do katalogów systemowych. Uprawnienia katalogów przeliczysz kalkulatorem chmod.

Haseł i kluczy nie umieszczaj w obrazie. COPY .env oraz ENV DB_PASSWORD=... zapisują sekret w warstwie, którą odczyta każdy, kto ma dostęp do rejestru. Przekazuj je przy uruchomieniu przez --env-file, sekrety orkiestratora albo RUN --mount=type=secret.

W Laravelu jest jeszcze jeden szczegół: php artisan config:cache wykonany podczas budowania zapisuje zmienne środowiskowe z etapu build, a nie te z produkcji. Generator zostawia w obrazie tylko cache tras i widoków, a konfigurację proponuje cache'ować przy starcie kontenera.

Dockerfile a docker-compose i Kubernetes

Dockerfile opisuje jeden obraz. Do uruchomienia kilku usług naraz — aplikacja, baza danych, Redis, serwer HTTP — służy docker-compose.yml, który wskazuje na zbudowany obraz i dokłada sieci oraz wolumeny; jego składnię sprawdzisz walidatorem YAML. Wdrożenie na klaster opisze generator manifestu Deployment dla Kubernetes, a przy ruchu obsługiwanym przez Apache przyda się generator pliku .htaccess.

Najczęściej zadawane pytania

Czy wygenerowany Dockerfile jest gotowy produkcyjnie?

To solidny szkielet: ma przypiętą wersję obrazu, cache zależności, konto bez uprawnień roota i sondę zdrowia. Przed wdrożeniem dołóż obsługę sekretów, konfigurację serwera HTTP przed PHP-FPM, limity pamięci oraz plik .dockerignore.

Dlaczego manifesty zależności kopiuje się osobno?

Bo Docker unieważnia warstwę i wszystkie następne, gdy zmieni się cokolwiek, co do niej weszło. Skopiowanie composer.json i composer.lock przed resztą kodu sprawia, że warstwa z instalacją pakietów jest używana ponownie, dopóki nie zmienisz zależności.

Czym różni się PHP-FPM od PHP CLI?

PHP-FPM to menedżer procesów, który odbiera żądania po protokole FastCGI z serwera HTTP, zwykle Nginx, i nasłuchuje na porcie 9000. PHP CLI uruchamia wbudowany serwer php -S, obsługujący jedno żądanie w danym momencie. Do produkcji stosuje się FPM z osobnym kontenerem serwera HTTP, a CLI zostaje na testy i zadania w tle.

Po co w obrazie HEALTHCHECK?

Sonda pozwala odróżnić kontener, który działa, od kontenera, który wstał, ale nie odpowiada. Docker Compose potrafi wstrzymać start usług zależnych, dopóki zależność nie zgłosi stanu healthy, a orkiestratory restartują wadliwe instancje. Dla PHP-FPM generator używa cgi-fcgi, co wymaga włączonego ping.path w konfiguracji puli.

Czy trzeba przypinać wersję obrazu bazowego?

Warto. Tag latest zmienia treść bez ostrzeżenia, więc ten sam plik zbuduje w maju inny obraz niż w styczniu i błąd trudno odtworzyć. Minimum to tag z wersją minor, na przykład php:8.3-fpm-alpine.

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