Generator Dockerfile

Generator Dockerfile

Skonfiguruj aplikację

Wybierz jeden z pięciu stosów i podaj plik lub pakiet, który rzeczywiście uruchamia aplikację.

PHP-FPM obsługuje FastCGI na wewnętrznym porcie TCP 9000, a nie HTTP. Połącz go w sieci prywatnej z serwerem WWW obsługującym FastCGI. Nie publikuj tego portu w internecie.

Sprawdź wygenerowane pliki

Utwórz Dockerfile i pasujący plik .dockerignore dla projektu Node.js, Python, PHP-FPM, Go lub Rust. Wybierz stos i podaj ścieżkę lub nazwę pliku wykonywalnego, której naprawdę używa Twoja aplikacja. Dzięki temu komenda startowa nie jest zgadywana. Wynik stanowi punkt wyjścia do zbudowania typowego projektu z podanymi plikami manifestów. Przeczytaj oba wygenerowane pliki, zanim dodasz je do repozytorium.

Tworzenie i sprawdzanie plików

  1. 1

    Wybierz stos i punkt uruchomienia

    Dla Node.js lub Python podaj względną ścieżkę skryptu, dla Go ścieżkę pakietu, a dla Rust nazwę pliku wykonywalnego Cargo. PHP-FPM używa własnej stałej komendy startowej.

  2. 2

    Ustaw katalog roboczy i port wewnętrzny

    Wybierz dozwoloną ścieżkę aplikacji, np. /app lub /srv/app. EXPOSE jedynie dokumentuje port, więc aplikacja nadal musi na nim nasłuchiwać. PHP-FPM używa wewnętrznego portu FastCGI 9000.

  3. 3

    Sprawdź oba pliki

    Przeczytaj Dockerfile i .dockerignore razem. Sprawdź nazwy manifestów, punkt uruchomienia, uprawnienia i zależności systemowe potrzebne w projekcie.

  4. 4

    Skopiuj lub pobierz

    Pobierz ZIP i rozpakuj oba pliki w katalogu głównym kontekstu budowania Dockera albo skopiuj każdy z nich i zapisz jako Dockerfile oraz .dockerignore. Następnie zbuduj obraz i przetestuj kontener ze swoją aplikacją.

Wybierz punkt uruchomienia, który istnieje w projekcie

Generator nie może przejrzeć Twojego repozytorium. Korzysta z podanych przez Ciebie: stosu, punktu uruchomienia, katalogu roboczego i portu. Aplikacja Node.js wymaga pliku startowego JavaScript i pliku blokady npm; Python wymaga skryptu i requirements.txt; Go wymaga modułu go.mod i ścieżki pakietu; Rust wymaga projektu Cargo i nazwy pliku wykonywalnego. PHP-FPM działa inaczej: uruchamia proces FastCGI, a nie serwer HTTP. Umieść przed nim w prywatnej sieci kontenerów serwer WWW obsługujący FastCGI, np. Nginx. Obraz PHP nasłuchuje wewnętrznie na porcie 9000. Nie publikuj tego portu FastCGI w internecie.

Stos Podawany punkt uruchomienia Pliki projektu do sprawdzenia
Node.js Względna ścieżka JavaScript, np. server.js package.json, package-lock.json, plik startowy
Python Względna ścieżka Python, np. app.py requirements.txt, plik startowy
PHP-FPM Stały proces php-fpm Kod PHP i osobny serwer WWW obsługujący FastCGI
Go Ścieżka pakietu, np. . lub ./cmd/server go.mod i kod źródłowy pakietu
Rust Nazwa pliku wykonywalnego Cargo Cargo.toml, Cargo.lock i wskazany cel binarny

Co robią wygenerowane pliki

WORKDIR ustawia katalog roboczy procesu wewnątrz obrazu. Formularz przyjmuje ścieżki aplikacji pod /app, /srv/app, /opt/app, /workspace, /usr/src/app lub /var/www; odrzuca ścieżki systemowe, takie jak /root, oraz znaki, które mogłyby zamienić dane wejściowe w inną instrukcję Dockerfile. EXPOSE dokumentuje port kontenera; nie otwiera zapory hosta ani nie sprawia, że aplikacja zaczyna nasłuchiwać. Wygenerowany .dockerignore wyklucza z kontekstu budowania typowe lokalne katalogi zależności, dane kontroli wersji oraz pliki .env w katalogu głównym i podkatalogach. Przeczytaj go przed budowaniem: jeśli reguła wyklucza plik potrzebny w projekcie, dostosuj ją. Nie umieszczaj sekretów w kodzie źródłowym, ARG ani ENV.

Kompilowane projekty Go i Rust korzystają z oddzielnych etapów budowania i uruchamiania, więc narzędzia kompilatora nie trafiają do końcowego obrazu. Warianty Node.js i Python instalują zadeklarowane zależności, a wariant PHP-FPM uruchamia usługę FastCGI. Sam przepis na kontener nie gwarantuje, że prawdziwy projekt się zbuduje, uruchomi, przejdzie test stanu, obsłuży oczekiwaną trasę lub będzie bezpieczny do wdrożenia. Frameworki, natywne rozszerzenia, kompilacja zasobów i uprawnienia do plików mogą wymagać dodatkowych kroków. Kolejność warstw i działanie plików ignorowania opisują dobre praktyki budowania oraz dokumentacja kontekstu budowania Docker.

Sprawdź na swojej aplikacji

Rozpakuj ZIP w katalogu głównym kontekstu budowania, zachowując dokładne nazwy Dockerfile i .dockerignore, albo skopiuj oba pliki i zapisz je pod tymi nazwami. Jeśli Twoja wersja Dockera to obsługuje, uruchom docker build --check ., a następnie docker build -t my-app .. Uruchom obraz w środowisku testowym i sprawdź faktyczną komendę startową oraz trasę. W przypadku stosów HTTP mapuj tylko zamierzony port kontenera i sprawdź odpowiedź. Dla PHP-FPM zamiast publikować port 9000, użyj prywatnego połączenia sieciowego FastCGI. Przed wdrożeniem produkcyjnym sprawdź aktualne poprawki obrazu bazowego i pliki blokady zależności.

Najczęściej zadawane pytania

Nie. To typowy punkt wyjścia dla wybranego stosu i punktu uruchomienia. Sprawdź rzeczywiste pliki zależności, pakiety systemowe, budowanie zasobów, uprawnienia, zachowanie przy starcie i wymagania bezpieczeństwa. Przed wdrożeniem zbuduj i uruchom obraz ze swoim projektem.

Nie. EXPOSE dokumentuje port kontenera. Aplikacja musi na nim nasłuchiwać, a osobna konfiguracja uruchomieniowa kontroluje mapowanie na host. PHP-FPM używa FastCGI, a nie HTTP; trzymaj jego port 9000 w prywatnej sieci kontenerów za odpowiednim serwerem WWW.

Ten plik wyklucza z kontekstu budowania Dockera typowe lokalne zależności, dane Git i pliki środowiskowe. W archiwum ZIP kropka na początku nazwy zostaje zachowana. Rozpakuj oba pliki w katalogu głównym kontekstu budowania, a następnie sprawdź każdą regułę w swoim projekcie, aby nie wykluczyć plików potrzebnych do budowania obrazu.

Nie. Wybrany stos, punkt uruchomienia, katalog roboczy i port trafiają do adresu URL strony wynikowej oraz do tej witryny, aby wyświetlić pliki. Nie wpisuj sekretów ani ścieżek do prywatnych repozytoriów. Narzędzie nie przesyła kodu źródłowego ani nie przegląda repozytorium.

Powiązane narzędzia

Narzędzie jest dostępne w innych językach