Docker-Entwicklungsumgebungen erstellen
Erstellen einer Dockerfile
Eine Dockerfile ist eine Textdatei, die alle Befehle enthält, die zum Erstellen eines Docker-Images benötigt werden. Hier ist ein Beispiel für eine Dockerfile für eine einfache Python-Webanwendung:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "app.py"]
Diese Dockerfile:
- Startet mit dem Basis-Image
python:3.9-slim
.
- Legt das Arbeitsverzeichnis auf
/app
fest.
- Kopiert die Datei
requirements.txt
in das Arbeitsverzeichnis.
- Installiert die Python-Abhängigkeiten, die in
requirements.txt
aufgeführt sind.
- Kopiert den Anwendungscode in das Arbeitsverzeichnis.
- Gibt den Befehl zum Ausführen der Anwendung (
python app.py
) an.
Erstellen eines Docker-Images
Um ein Docker-Image aus der Dockerfile zu erstellen, führen Sie den folgenden Befehl im selben Verzeichnis wie die Dockerfile aus:
docker build -t my-python-app .
Dies erstellt ein Docker-Image mit dem Tag my-python-app
.
Ausführen eines Docker-Containers
Um einen Docker-Container aus dem Image my-python-app
auszuführen, verwenden Sie den folgenden Befehl:
docker run -p 8080:8080 my-python-app
Dies startet einen neuen Container und ordnet den Port 8080 auf dem Host dem Port 8080 im Container zu.
Entwicklung mit Docker Compose
Docker Compose ist ein Werkzeug zum Definieren und Ausführen von Multi-Container-Docker-Anwendungen. Hier ist ein Beispiel für eine docker-compose.yml
-Datei für eine einfache Webanwendung mit einer Datenbank:
version: "3"
services:
web:
build: .
ports:
- 8080:8080
depends_on:
- db
db:
image: postgres:13
environment:
POSTGRES_DB: myapp
POSTGRES_USER: myapp
POSTGRES_PASSWORD: secret
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:
Diese docker-compose.yml
-Datei definiert zwei Services: web
und db
. Der Service web
erstellt ein Docker-Image aus dem aktuellen Verzeichnis und ordnet den Port 8080 auf dem Host dem Port 8080 im Container zu. Der Service db
verwendet das offizielle PostgreSQL-Image und richtet eine Datenbank für die Anwendung ein.
Um die Anwendung zu starten, führen Sie aus:
docker-compose up -d
Dies startet die Container web
und db
im Hintergrund.