Service-Images abrufen unter Ignorierung von buildbaren Services
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.