diff --git a/assets/08/app/Dockerfile b/assets/08/app/Dockerfile new file mode 100644 index 0000000..5581680 --- /dev/null +++ b/assets/08/app/Dockerfile @@ -0,0 +1,6 @@ +FROM python:3.12-slim +WORKDIR /app +COPY requirements.txt requirements.txt +RUN pip install -r requirements.txt +COPY . . +CMD ["python", "app.py"] \ No newline at end of file diff --git a/assets/08/app/app.py b/assets/08/app/app.py new file mode 100644 index 0000000..97d3191 --- /dev/null +++ b/assets/08/app/app.py @@ -0,0 +1,24 @@ +from flask import Flask, jsonify +import pymysql.cursors + +app = Flask(__name__) + +def get_db_connection(): + connection = pymysql.connect(host='mariadb-container', + user='root', + password='my-secret-pw', + database='flaskapp', + cursorclass=pymysql.cursors.DictCursor) + return connection + +@app.route('/') +def users(): + connection = get_db_connection() + with connection.cursor() as cursor: + cursor.execute("SELECT * FROM users") + users = cursor.fetchall() + connection.close() + return jsonify(users) + +if __name__ == '__main__': + app.run(debug=True, host='0.0.0.0', port=5000) \ No newline at end of file diff --git a/assets/08/app/requirements.txt b/assets/08/app/requirements.txt new file mode 100644 index 0000000..8a4c210 --- /dev/null +++ b/assets/08/app/requirements.txt @@ -0,0 +1,2 @@ +Flask==3.0.2 +PyMySQL==1.1.0 \ No newline at end of file diff --git a/docs/02_images.md b/docs/02_images.md index e9c19f4..be6e582 100644 --- a/docs/02_images.md +++ b/docs/02_images.md @@ -132,7 +132,6 @@ Denke an ein Image wie an einen **Bauplan**, der verwendet wird, um Container zu Wenn du ein Image ausführst, wird es zu einem Container. - Ein Image ist ein schreibgeschütztes Dateisystem - Ein Container ist ein eingekapselter Satz von Prozessen, der in einer schreibbaren Kopie dieses Dateisystems läuft -- Um die Startzeit des Containers zu optimieren, wird statt einer regulären Kopie die Technik des "Copy-on-Write" verwendet - `docker run` startet einen Container aus einem gegebenen Image
diff --git a/docs/04_container_loeschen.md b/docs/04_container_loeschen.md index b6356c1..8c1bf80 100644 --- a/docs/04_container_loeschen.md +++ b/docs/04_container_loeschen.md @@ -39,7 +39,7 @@ CONTAINER ID IMAGE COMMAND CREATED STATUS 26f164a65285 mariadb "docker-entrypoint.s…" 9 minutes ago Exited (0) 2 minutes ago focused_noether ``` -Wir haben somit den conteiner "gracefully" gestoppt, aber es gibt auch die Möglichkeit, einen Container "forcefully" zu stoppen. Dazu gibst du den folgenden Befehl ein: +Wir haben somit den container "gracefully" gestoppt, aber es gibt auch die Möglichkeit, einen Container "forcefully" zu stoppen. Dazu gibst du den folgenden Befehl ein: ```bash docker kill focused_noether diff --git a/docs/08_connect_mariadb.md b/docs/08_connect_mariadb.md new file mode 100644 index 0000000..7af3609 --- /dev/null +++ b/docs/08_connect_mariadb.md @@ -0,0 +1,123 @@ +--- +title: 8. MariaDB-Container verbinden +sidebar_position: 9 +--- + +In diesem Lab erweitern wir unsere Python-Webanwendung, sodass sie auf eine MariaDB-Instanz zugreifen und Daten lesen kann. Dies ermöglicht es uns, dynamische Inhalte in unserer Flask-App anzuzeigen, die aus der Datenbank abgerufen werden. + +## Vorbereitung der MariaDB-Instanz + +Bevor wir unsere Flask-Anwendung erweitern, müssen wir sicherstellen, dass unser MariaDB-Container läuft und mit Daten gefüllt ist, die wir abfragen können. + +### Überprüfung, ob der MariaDB-Container läuft + +Lösche den alten MariaDB-Container, falls er noch läuft: + +```bash +docker ps +docker stop