Ein einfaches Docker Compose-Projekt vorbereiten
In diesem Schritt bereiten wir ein einfaches Docker Compose-Projekt vor. Da Docker Compose in der LabEx-Umgebung nicht vorinstalliert ist, werden wir es zunächst installieren. Anschließend erstellen wir eine einfache Webanwendung und eine Docker Compose-Datei, um sie zu definieren und auszuführen.
Zuerst installieren wir Docker Compose. Wir laden die Docker Compose-Binärdatei herunter und machen sie ausführbar.
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
Nun überprüfen wir die Installation, indem wir die Docker Compose-Version abfragen.
docker-compose --version
In der Ausgabe sollte die installierte Version von Docker Compose angezeigt werden.
Als Nächstes erstellen wir eine einfache Webanwendung. Wir verwenden eine grundlegende Python Flask-Anwendung. Erstellen Sie ein Verzeichnis für unser Projekt und wechseln Sie hinein.
mkdir my-web-app
cd my-web-app
Erstellen Sie im Verzeichnis my-web-app
eine Datei namens app.py
mit folgendem Inhalt:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, Docker Compose!'
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')
Dies ist eine einfache Flask-Anwendung, die "Hello, Docker Compose!" zurückgibt, wenn sie aufgerufen wird.
Nun benötigen wir ein Dockerfile
, um ein Docker-Image für unsere Flask-Anwendung zu erstellen. Erstellen Sie im Verzeichnis my-web-app
eine Datei namens Dockerfile
mit folgendem Inhalt:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["python", "app.py"]
Dieses Dockerfile verwendet ein schlankes Python 3.9-Image, legt das Arbeitsverzeichnis fest, kopiert und installiert Abhängigkeiten aus requirements.txt
, kopiert den Anwendungscode, öffnet Port 5000 und gibt den Befehl zum Ausführen der Anwendung an.
Wir benötigen auch eine requirements.txt
-Datei für die Flask-Abhängigkeit. Erstellen Sie im Verzeichnis my-web-app
eine Datei namens requirements.txt
mit folgendem Inhalt:
Flask==2.2.2
Schließlich erstellen wir eine docker-compose.yml
-Datei, um unseren Dienst zu definieren. Erstellen Sie im Verzeichnis my-web-app
eine Datei namens docker-compose.yml
mit folgendem Inhalt:
version: "3.8"
services:
web:
build: .
ports:
- "5000:5000"
Diese docker-compose.yml
-Datei definiert einen Dienst namens web
. Sie weist Docker Compose an, das Image mit dem Dockerfile
im aktuellen Verzeichnis (.
) zu erstellen und Port 5000 auf dem Host mit Port 5000 im Container zu verbinden.
Nun bauen und starten wir den Dienst mit Docker Compose. Stellen Sie sicher, dass Sie sich im Verzeichnis ~/project/my-web-app
befinden.
docker-compose up -d
Dieser Befehl erstellt das Image (falls noch nicht vorhanden), erstellt einen Container für den web
-Dienst und startet ihn im Hintergrund (-d
).
Sie können überprüfen, ob der Container läuft, indem Sie den Befehl docker ps
verwenden.
docker ps
Sie sollten einen Container für den Dienst my-web-app-web-1
sehen, der läuft.
Um zu überprüfen, ob die Anwendung funktioniert, können Sie sie mit curl
aufrufen.
curl http://localhost:5000
Sie sollten die Ausgabe "Hello, Docker Compose!" sehen.