Service-Images abrufen und buildbare Services ignorieren
In diesem Schritt untersuchen wir die Verwendung des Flags --ignore-buildable
mit docker compose pull
. Dieses Flag ist nützlich, wenn Ihre compose.yaml
-Datei sowohl Services enthält, die aus einem Dockerfile gebaut werden (buildbare Services), als auch Services, die vorgefertigte Images verwenden. Das --ignore-buildable
-Flag weist Docker Compose an, nur Images für Services abzurufen, die einen image
-Schlüssel angeben, und Services mit einem build
-Schlüssel zu überspringen.
Zuerst passen wir unsere compose.yaml
-Datei an, um einen buildbaren Service hinzuzufügen. Wir werden einen einfachen Service erstellen, der ein Basis-Image baut.
Stellen Sie sicher, dass Sie sich im Verzeichnis ~/project/my-compose-app
befinden.
cd ~/project/my-compose-app
Erstellen Sie nun ein einfaches Dockerfile für unseren buildbaren Service.
nano Dockerfile
Fügen Sie folgenden Inhalt in das Dockerfile
ein:
FROM alpine:latest
CMD ["echo", "Hello from buildable service!"]
Speichern Sie die Datei und beenden Sie den nano-Editor.
Als nächstes modifizieren Sie die compose.yaml
-Datei, um einen neuen Service hinzuzufügen, der dieses Dockerfile verwendet.
nano compose.yaml
Fügen Sie folgende Service-Definition unterhalb des db
-Services in Ihre compose.yaml
-Datei ein:
builder:
build: .
Ihre vollständige compose.yaml
-Datei sollte nun wie folgt aussehen:
services:
web:
image: nginx:latest
ports:
- "80:80"
db:
image: redis:latest
builder:
build: .
Speichern Sie die Datei und beenden Sie den nano-Editor.
Nun versuchen wir, Images mit docker compose pull --ignore-buildable
abzurufen.
docker compose pull --ignore-buildable
Sie werden beobachten, dass Docker Compose die Services web
und db
überprüft und deren Images bei Bedarf abruft (diese sollten bereits aus vorherigen Schritten vorhanden sein). Der builder
-Service wird jedoch ignoriert, da er den build
-Schlüssel anstelle des image
-Schlüssels verwendet. Sie werden keine Ausgabe bezüglich des Builds oder Abrufs eines Images für den builder
-Service sehen.
Um zu bestätigen, dass kein Image für den builder
-Service gebaut oder abgerufen wurde, können Sie Ihre Docker-Images auflisten.
docker images
Sie sollten weiterhin nur die nginx
- und redis
-Images sehen. Durch diesen Befehl wurde kein neues Image aus dem Dockerfile
erstellt.
Dies demonstriert, wie das --ignore-buildable
-Flag Ihnen ermöglicht, selektiv nur vorgefertigte Images abzurufen, was in verschiedenen Entwicklungs- und Bereitstellungsszenarien nützlich sein kann.