diff --git a/nginx-flask-mysql/backend/Dockerfile b/nginx-flask-mysql/backend/Dockerfile
index 190d518..5faf0fe 100755
--- a/nginx-flask-mysql/backend/Dockerfile
+++ b/nginx-flask-mysql/backend/Dockerfile
@@ -1,10 +1,9 @@
-FROM python:3.6-alpine3.7
-EXPOSE 5000
+FROM python:3.8-alpine
ENV PYTHONUNBUFFERED 1
-RUN mkdir /code
WORKDIR /code
-ADD requirements.txt /code/
+COPY requirements.txt /code/
RUN pip install -r requirements.txt
-ADD . /code/
+COPY . /code/
ENV FLASK_APP hello.py
CMD flask run --host=0.0.0.0
+
\ No newline at end of file
diff --git a/nginx-flask-mysql/backend/hello.py b/nginx-flask-mysql/backend/hello.py
index a60da8d..20f3010 100755
--- a/nginx-flask-mysql/backend/hello.py
+++ b/nginx-flask-mysql/backend/hello.py
@@ -1,6 +1,41 @@
+import os
+import time
from flask import Flask
+import mysql.connector
+
+passfile = open('/run/secrets/db-password', 'r')
+
+#give db some time to start
+time.sleep(3)
+#connect to db
+conn = mysql.connector.connect(
+ user='root',
+ password=passfile.read(),
+ host='db', # name of the mysql service as set in the docker-compose file
+ database='example',
+ auth_plugin='mysql_native_password'
+)
+passfile.close()
+
+cursor = conn.cursor()
+
app = Flask(__name__)
@app.route('/')
-def hello_world():
- return 'Hello world'
+def listBlog():
+ cursor.execute('SELECT title FROM blog')
+ response = ''
+ for c in cursor:
+ response = response + '
' + c[0] + '
'
+ return response
+
+def prepare_db():
+ cursor.execute('DROP TABLE IF EXISTS blog')
+ cursor.execute('CREATE TABLE blog (id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255))')
+ cursor.executemany('INSERT INTO blog (id, title) VALUES (%s, %s);', [(i, 'Blog post #%d'% i) for i in range (1,5)])
+ conn.commit()
+
+
+if __name__ == '__main__':
+ prepare_db()
+ app.run()
diff --git a/nginx-flask-mysql/backend/requirements.txt b/nginx-flask-mysql/backend/requirements.txt
index 34ffbb7..d6c7773 100755
--- a/nginx-flask-mysql/backend/requirements.txt
+++ b/nginx-flask-mysql/backend/requirements.txt
@@ -1,6 +1,2 @@
-click==6.7
-Flask==1.0.2
-itsdangerous==0.24
-Jinja2==2.10
-MarkupSafe==1.0
-Werkzeug==0.14.1
+Flask==1.1.1
+mysql-connector==2.2.9
diff --git a/nginx-flask-mysql/docker-compose.yaml b/nginx-flask-mysql/docker-compose.yaml
index a9f740f..a30d724 100644
--- a/nginx-flask-mysql/docker-compose.yaml
+++ b/nginx-flask-mysql/docker-compose.yaml
@@ -2,13 +2,15 @@ version: "3.7"
services:
backend:
build: backend
- depends_on:
- - db
+ secrets:
+ - db-password
+ ports:
+ - 5000:5000
db:
environment:
MYSQL_DATABASE: example
MYSQL_ROOT_PASSWORD_FILE: /run/secrets/db-password
- image: mysql:5.7
+ image: mysql:8.0.19
restart: always
secrets:
- db-password
@@ -17,9 +19,7 @@ services:
proxy:
build: proxy
ports:
- - 80:80
- depends_on:
- - backend
+ - 8080:80
volumes:
db-data: {}
secrets: