Lab 06: Übungsaufgaben zu Dockerfiles¶
Aufgabe 1¶
In dieser Aufgabe legen wir eine kleine Flask-Anwendung an, verpacken sie in ein Docker-Image und starten einen Container davon.
Baue zuerst das Image mit den in diesem Verzeichnis gegebenen Dateien.
Dockerfile:
FROM python:3.14
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY app.py .
ENV FLASK_ENV=production
EXPOSE 80
CMD ["python", "app.py"]
app.py:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hallo():
return "Hallo, Willkommen bei der Docker-Flask-Anwendung!"
if __name__ == "__main__":
app.run(host="0.0.0.0", port=80)
requirements.txt:
Flask==3.1.2
.dockerignore:
README.md
docker build -t my_flask_app .
Starte nun einen Container davon
docker run -d -p 8080:80 --name my_flask_container my_flask_app
Öffne nun einen Browser auf und schau, ob die Anwendung läuft.
Schau dir nun die Logs an.
docker logs my_flask_container
Lösche nun Container und Image.
Aufgabe 2¶
In dieser Aufgabe erstellt ihr selbst eine Dockerfile.
Setze das nginx-Image als Basis ein und erweitere es wie folgt:
- Es soll eine HTML-Datei beinhalten, in deren Inhalt "Hello World" steht.
- Die HTML-Datei soll unter
/usr/share/nginx/html/index.htmlim Image vorhanden sein. - Baue das Image und starte einen Container davon. Der laufende Container soll unter Port 9000 erreichbar sein und obige HTML-Seite anzeigen.
- Prüfe, ob alles funktioniert, indem du http://localhost:9000 aufrufst.
- Für diese Aufgabe reichen die Dockerfile-Direktiven
FROMundCOPY- Um einem Image direkt beim Build einen Namen zu geben, verwende das
-tFlag. Beispiel:docker build . -t my-nginx.- NGINX lauscht innerhalb Container standardmäßig auf Port 80. Auf dem Host soll NGINX aber unter Port 9000 erreichbar sein. Dabei hilft dir das
-pArgument. Beispiel:docker run -p 9000:80 my-nginx