Images vor dem Start von Containern erstellen
In den vorherigen Schritten haben wir vorgefertigte Docker-Images von Docker Hub (wie nginx:latest
) verwendet. Häufig müssen Sie jedoch eigene benutzerdefinierte Docker-Images für Ihre Anwendungen erstellen.
Docker Compose kann automatisch Images erstellen, die in Ihrer docker-compose.yml
-Datei definiert sind, bevor die Dienste gestartet werden. Dies erfolgt typischerweise durch Angabe eines build
-Kontexts anstelle eines image
-Namens für einen Dienst.
Passen wir unsere docker-compose.yml
-Datei an, um ein einfaches benutzerdefiniertes Nginx-Image zu erstellen.
Erstellen Sie zunächst ein neues Verzeichnis namens nginx_custom
in ~/project
:
cd ~/project
mkdir nginx_custom
Erstellen Sie nun eine Dockerfile
im nginx_custom
-Verzeichnis:
nano ~/project/nginx_custom/Dockerfile
Fügen Sie folgenden Inhalt zur Dockerfile
hinzu:
FROM nginx:latest
RUN echo '<h1>Hello from Custom Nginx!</h1>' >/usr/share/nginx/html/index.html
Diese Dockerfile
basiert auf dem offiziellen nginx:latest
-Image und ersetzt die standardmäßige index.html
-Datei durch eine benutzerdefinierte Version.
Ändern Sie nun Ihre ~/project/docker-compose.yml
-Datei, um diese Dockerfile
für den Build des web
-Service-Images zu verwenden. Öffnen Sie die Datei zur Bearbeitung:
nano ~/project/docker-compose.yml
Passen Sie die web
-Service-Definition an, um build
statt image
zu verwenden:
version: "3.8"
services:
web:
build: ./nginx_custom
ports:
- "80:80"
Wenn Sie nun docker compose up
ausführen, wird Docker Compose zunächst das Image erstellen, das durch die Dockerfile
im ./nginx_custom
-Verzeichnis definiert ist, und dann einen Container mit diesem neu erstellten Image starten.
Stellen Sie sicher, dass Sie sich im ~/project
-Verzeichnis befinden, und führen Sie aus:
cd ~/project
docker compose up -d
Sie sehen eine Ausgabe, die anzeigt, dass Docker Compose das Image erstellt und anschließend den Container erzeugt und startet.
Um zu überprüfen, ob die benutzerdefinierte Nginx-Seite ausgeliefert wird, verwenden Sie curl
:
curl http://localhost
Sie sollten die Ausgabe <h1>Hello from Custom Nginx!</h1>
sehen, was bestätigt, dass das Image erstellt wurde und der Container mit dem benutzerdefinierten Inhalt läuft.
Zum Aufräumen stoppen Sie die laufenden Dienste:
cd ~/project
docker compose down