Dockerfile-generator

Dockerfile-generator

Konfigurera appen

Välj en av fem teknikstackar och ange filen eller paketet som faktiskt startar din app.

PHP-FPM använder FastCGI på den interna TCP-porten 9000, inte HTTP. Anslut en webbserver med stöd för FastCGI via ett privat nätverk. Publicera inte porten på internet.

Granska genererade filer

Skapa en Dockerfile och en matchande .dockerignore för ett projekt med Node.js, Python, PHP-FPM, Go eller Rust. Välj teknikstack och ange den sökväg eller binärfil som din app faktiskt använder, i stället för att utgå från ett gissat startkommando. Resultatet är en möjlig utgångspunkt för ett konventionellt projekt med de angivna manifestfilerna. Läs båda filerna innan du lägger dem i ditt kodförråd.

Skapa och kontrollera filerna

  1. 1

    Välj teknikstack och startpunkt

    För Node.js eller Python anger du en relativ sökväg till skriptet. För Go anger du paketets sökväg. För Rust anger du namnet på Cargo-binären. PHP-FPM har ett fast startkommando.

  2. 2

    Ange arbetskatalog och intern port

    Välj en tillåten appsökväg, till exempel /app eller /srv/app. EXPOSE dokumenterar porten, så appen måste fortfarande lyssna på den. PHP-FPM använder den interna FastCGI-porten 9000.

  3. 3

    Granska båda filerna

    Läs Dockerfile och .dockerignore tillsammans. Kontrollera manifestfilernas namn, startpunkten, behörigheter vid körning och eventuella systemberoenden som projektet kräver.

  4. 4

    Kopiera eller ladda ned

    Ladda ned ZIP-filen och packa upp båda filerna i byggkontextens rot, eller kopiera dem var för sig och spara dem som Dockerfile och .dockerignore. Bygg och testa sedan containern med din riktiga app.

Välj den startpunkt som faktiskt finns i ditt projekt

Generatorn kan inte läsa ditt kodförråd. Den använder teknikstacken, startpunkten, arbetskatalogen och porten som du anger. En Node.js-app behöver en JavaScript-startfil och en npm-låsfil. En Python-app behöver ett skript och requirements.txt. Go behöver en go.mod-modul och en paketsökväg. Rust behöver ett Cargo-projekt och en namngiven binär. PHP-FPM fungerar annorlunda: den startar en FastCGI-process, inte en HTTP-server. Placera en webbserver med stöd för FastCGI, till exempel Nginx, framför den på ett privat containernätverk. PHP-avbildningen lyssnar internt på port 9000. Publicera inte FastCGI-porten på internet.

Teknikstack Startpunkt du anger Projektfiler att kontrollera
Node.js Relativ JavaScript-sökväg, till exempel server.js package.json, package-lock.json, startfilen
Python Relativ Python-sökväg, till exempel app.py requirements.txt, startfilen
PHP-FPM Fast php-fpm-process PHP-källkod och en separat FastCGI-webbserver
Go Paketsökväg, till exempel . eller ./cmd/server go.mod och källkoden för paketet
Rust Cargo-binärens namn Cargo.toml, Cargo.lock och den namngivna binären

Vad de genererade filerna gör

WORKDIR anger processens katalog inne i avbildningen. Formuläret godtar appsökvägar under /app, /srv/app, /opt/app, /workspace, /usr/src/app eller /var/www. Systemsökvägar som /root och tecken som skulle kunna bli en annan Dockerfile-instruktion avvisas. EXPOSE dokumenterar en containerport. Det öppnar varken värddatorns brandvägg eller får en app att börja lyssna. Den genererade .dockerignore utesluter typiska lokala beroendekataloger, versionshanteringsdata och .env-filer både i roten och i underkataloger från byggkontexten. Läs filen före bygget: om projektet använder en fil som matchar en regel måste du anpassa regeln. Baka aldrig in hemligheter i källkod, ARG eller ENV.

Go- och Rust-projekt som kompileras använder separata bygg- och körningssteg så att kompilatorverktygen inte följer med i den slutliga avbildningen. Varianterna för Node.js och Python installerar angivna beroenden, medan PHP-FPM-varianten startar FastCGI-tjänsten. Ett containerrecept kan inte garantera att ett verkligt projekt kan byggas, starta, klara en hälsokontroll, betjäna förväntad adress eller driftsättas säkert. Ramverk, systemtillägg, tillgångsbyggen och filbehörigheter kan kräva fler steg. Dockers rekommendationer för byggen och guide till byggkontexten förklarar lagerordning och hur ignoreringsfiler fungerar.

Validera med din app

Packa upp ZIP-filen i byggkontextens rot så att filerna behåller sina exakta namn, Dockerfile och .dockerignore. Du kan också kopiera och spara dem var för sig under dessa namn. Kör docker build --check . om din Docker-version stöder det och sedan docker build -t my-app .. Starta avbildningen i en testmiljö och kontrollera det faktiska startkommandot och adressen som appen betjänar. För HTTP-stackar mappar du bara den avsedda containerporten och kontrollerar svaret. För PHP-FPM använder du en privat FastCGI-nätverksanslutning i stället för att publicera port 9000. Granska aktuella uppdateringar av basavbildningen och projektets låsfiler före en produktionslansering.

Vanliga frågor

Nej. Den är en konventionell utgångspunkt för den teknikstack och startpunkt du väljer. Kontrollera projektets faktiska beroendefiler, systempaket, tillgångsbygge, behörigheter, startbeteende och säkerhetskrav. Bygg och kör avbildningen med ditt projekt innan du driftsätter den.

Nej. EXPOSE dokumenterar containerporten. Appen måste lyssna på porten, och separat körningskonfiguration styr eventuell mappning till värddatorn. PHP-FPM använder FastCGI i stället för HTTP. Håll dess port 9000 på ett privat containernätverk bakom en webbserver som stöder FastCGI.

Ignoreringsfilen utesluter vanliga lokala beroenden, Git-data och miljöfiler från Dockers byggkontext. Filnamnets inledande punkt finns kvar i ZIP-filen. Packa upp båda filerna i byggkontextens rot och granska sedan varje regel mot ditt projekt så att filer som behövs för bygget inte utesluts.

Nej. Vald teknikstack, startpunkt, arbetskatalog och port skickas i resultatssidans URL och når webbplatsen när filerna visas. Ange inte hemligheter eller privata sökvägar till kodförråd. Verktyget laddar inte upp din källkod och läser inte ditt kodförråd.

Relaterade verktyg

Verktyget finns på andra språk