Ein einfaches Docker-Compose-Projekt mit Build-Kontext vorbereiten
In diesem Schritt richten wir ein einfaches Docker-Compose-Projekt mit einem Build-Kontext ein. Ein Build-Kontext bezeichnet die Gruppe von Dateien an einem bestimmten Ort (PATH oder URL), die an den Docker-Daemon gesendet werden, um ein Docker-Image zu erstellen. Dies ist wichtig, da das Dockerfile und alle benötigten Dateien (wie Anwendungscode) innerhalb des Build-Kontexts liegen müssen.
Zuerst erstellen wir ein Verzeichnis für unser Projekt. Wir nennen es my-watch-app
.
mkdir ~/project/my-watch-app
cd ~/project/my-watch-app
Nun erstellen wir eine einfache Anwendungsdatei. Wir verwenden ein grundlegendes Python-Skript, das eine Nachricht ausgibt.
nano app.py
Fügen Sie folgenden Inhalt zu app.py
hinzu:
print("Hello from the Docker container!")
Speichern und schließen Sie die Datei (Strg+X, Y, Enter).
Als Nächstes erstellen wir ein Dockerfile, das ein Image für unsere Anwendung baut. Das Dockerfile kopiert unser Python-Skript in das Image und führt es aus.
nano Dockerfile
Fügen Sie folgenden Inhalt zum Dockerfile hinzu:
FROM python:3.9-slim
WORKDIR /app
COPY app.py .
CMD ["python", "app.py"]
Dieses Dockerfile verwendet ein schlankes Python-3.9-Image als Basis, setzt das Arbeitsverzeichnis auf /app
, kopiert app.py
in das /app
-Verzeichnis und legt fest, dass das Python-Skript beim Start des Containers ausgeführt wird.
Abschließend erstellen wir eine docker-compose.yaml
-Datei, um unseren Service zu definieren. Diese Datei teilt Docker Compose mit, wie unsere Anwendung gebaut und ausgeführt werden soll.
nano docker-compose.yaml
Fügen Sie folgenden Inhalt zu docker-compose.yaml
hinzu:
version: "3.8"
services:
myapp:
build: .
volumes:
- .:/app
Diese docker-compose.yaml
-Datei definiert einen Service namens myapp
. Die Anweisung build: .
weist Docker Compose an, das Image mit dem Dockerfile im aktuellen Verzeichnis (unserem Build-Kontext) zu bauen. Die Zeile volumes: - .:/app
bindet das aktuelle Verzeichnis (.
) auf dem Host-Rechner in das /app
-Verzeichnis im Container ein. Dies ist entscheidend für docker compose watch
, da Änderungen auf dem Host so im Container übernommen werden.
Nun bauen und starten wir unseren Service mit Docker Compose, um sicherzustellen, dass alles korrekt eingerichtet ist. Da Docker Compose nicht vorinstalliert ist, müssen wir es zuerst installieren.
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Jetzt können wir docker-compose
verwenden.
docker-compose up --build
Sie sollten eine Ausgabe sehen, die anzeigt, dass das Image gebaut wird und der Container läuft, wobei "Hello from the Docker container!" ausgegeben wird. Drücken Sie Strg+C
, um den Container zu stoppen.