Zum Inhalt

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.html im 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 FROM und COPY
  • Um einem Image direkt beim Build einen Namen zu geben, verwende das -t Flag. 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 -p Argument. Beispiel: docker run -p 9000:80 my-nginx