Update: Docker Compose (without Frontend now)

This commit is contained in:
Yûki VACHOT 2022-01-11 17:57:40 +01:00
parent f1ae473b40
commit bce2237303
12 changed files with 54 additions and 281 deletions

7
backend/Dockerfile Normal file
View file

@ -0,0 +1,7 @@
FROM python:latest
WORKDIR /data/backend
COPY requirements.txt requirements.txt
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
COPY . .
CMD [ "python", "-m" , "flask", "run", "--host=0.0.0.0"]

View file

@ -5,4 +5,5 @@ app = create_app()
if __name__ == "__main__":
PORT = os.environ.get('PORT', 33507)
print('app.run')
app.run(host='0.0.0.0', port=PORT, DEBUG=True)

View file

@ -19,13 +19,17 @@ def create_app():
app.config.from_object("config.Config")
if app.config['SQLALCHEMY_DATABASE_URI_1'] is None or app.config['SQLALCHEMY_DATABASE_URI_2'] is None:
print('No ENV Variable for DATABASE_URL_1 or DATABASE_URL_2')
print('No ENV Variable for DATABASE_URL_USERS or DATABASE_URL_LOGS')
sys.exit(1)
else:
print('ENV Variables passed : ', app.config['SQLALCHEMY_BINDS'])
print('init_app')
db.init_app(app)
with app.app_context():
print('import routes')
from . import routes
print('db.create_all')
db.create_all()
print('db created')
return app

View file

@ -1,19 +1,9 @@
print('hashlib')
import hashlib
import os
from datetime import datetime
print('flask_sqlalchemy')
from flask_sqlalchemy import inspect
print('sqlalchemy')
from sqlalchemy import asc, desc, or_
print('users_model')
from .users_model import Users, db
print('logs_model')
from .logs_model import Logs

View file

@ -3,7 +3,7 @@ from flask import request
from .responses import send_message, send_error
from .api_functions import db_login, db_register, db_user_update, db_create_log, db_user_delete, db_admin_update_user, db_users
from .sessionJWT import create_auth_token, check_auth_token
print('route imported')
# Login
@app.route('/api/login', methods=['POST'])

View file

@ -1,7 +1,11 @@
Flask_Migrate
Flask_SQLAlchemy
Flask_Script
Flask
sqlalchemy
hashlib
jwt
alembic==1.7.5
Flask==2.0.2
Flask-Migrate==3.1.0
Flask-Script==2.0.6
Flask-SQLAlchemy==2.5.1
Flask-WTF==0.15.1
pipreqs==0.4.10
PyJWT==2.3.0
pytest==6.2.5
SQLAlchemy==1.4.27
psycopg2==2.9.2

View file

@ -1,59 +0,0 @@
from logs_model import Logs
from datetime import date
TAB_LOG = [
{
"id": 1,
"date": date.fromisoformat('2021-12-04'),
"user": "riri",
"ip": "0.0.0.0",
"table": "Users",
"action": "connexion",
"status": "succes",
"status_code": 200
},
{
"id": 2,
"date": date.fromisoformat('2021-12-04'),
"user": "fifi",
"ip": "0.0.0.0",
"table": "Users",
"action": "connexion",
"status": "succes",
"status_code": 200
},
{
"id": 3,
"date": date.fromisoformat('2021-12-04'),
"user": "loulou",
"ip": "0.0.0.0",
"table": "Users",
"action": "connexion",
"status": "succes",
"status_code": 200
},
]
def get_log_object(i: int):
return Logs(
id=TAB_LOG[i]["id"],
date=TAB_LOG[i]["date"],
user=TAB_LOG[i]["user"],
ip=TAB_LOG[i]["ip"],
table=TAB_LOG[i]["table"],
action=TAB_LOG[i]["action"],
status=TAB_LOG[i]["status"],
status_code=TAB_LOG[i]["status_code"]
)
def get_log_json(i: int):
return TAB_LOG[i]

View file

@ -1,59 +0,0 @@
import sys
sys.path.append( "../application" )
import users_model
import logs_model
from users_model import Users
TAB_USER = [
{
"email": "riri@gmail.com",
"hash_pass": "ririPass",
"salt": "b'\x98\x95]\xa2B\xe5\x84gN\n1\x11\x1c%\xf7S\x8b\x88\xf7\xaa\x83\xf8$\xa8\xd5A\xd1\xa0\xf7:j\x10'",
"is_admin": False
},
{
"id": 2,
"email": "fifi@gmail.com",
"hash_pass": "fifiPass",
"salt": "b'\xa9X9{\xc3\x8c\xe0\xeb\x0b\x01\xd0.o\t\xc0bv\xac\xe2n\x878\xf7\xba\x16\xd6\xee\x94\xc8U\xf0\x15'",
"is_admin": False
},
{
"id": 3,
"email": "donald@gmail.com",
"hash_pass": "donaldPass",
"salt": "b'\xefM\xe5q\r\xb2\xc5\xff3\x88\x0c\x87\xa3\xe9F\xd7:\xc1\xc2J\xabvVR&\xe1-|D\xf5L '"
"is_admin": False
},
{
"id": 4,
"email": "daisy@gmail.com",
"hash_pass": "daisyPass",
"salt": "b'\x01\xefCC\x05\x1f\x85\xd8\xf0\x02\xd1\x1c\xcb\xab\xec\x87M\x03\xe5T\x05]\x11\xc45<}\xd3\xfbFA\xbb'"
"is_admin": True
},
]
def get_user_object(i: int):
return Users(
id=TAB_USER[i]["id"],
email=TAB_USER[i]["email"],
login=TAB_USER[i]["login"],
hashPass=TAB_USER[i]["hashPass"],
isAdmin=TAB_USER[i]["isAdmin"]
)
def get_user_json(i: int):
return TAB_USER[i]

View file

@ -1,6 +0,0 @@
def initialisation():
# supprimer: Riri, Fifi, Donald, Daisy
#

View file

@ -1,61 +0,0 @@
print("debut")
import sys
#sys.path.append( "../application" )
import os
os.chdir("../application")
print(os.getcwd())
from .api_functions import db_register
print("fin")
#def test_db_register():
#
# # success
# ip = "1.2.3.4.5"
# email = "homer@gmail.com"
# password = "homerPass"
# is_admin = False
# result1 = db_register(ip, email, password, is_admin)
# assert(result1["status"] == 0)
#
# # fail: user already exists
# result2 = db_register(ip, email, password, is_admin)
# assert(result2["status"] == 1)
#
# # delete the new user
# if result1["status"] == 0:
#
#
#def test_db_login():
#
# # success
# result = db_login(ip, email, password)
# assert(result["status"] == 0)
#
# # fail: email doesn't exist
# result = db_login(ip, email, password)
# assert(result["status"] == 1)
#
# # fail: hashPass not correct
# assert(result["status"] == 1)

View file

@ -1,53 +0,0 @@
# Third party modules
import pytest
from datetime import date
from __init__ import create_app, db
from users_model import Users
from logs_model import Logs
import fictive_users
import ficitve_logs
@pytest.fixture
def client():
app = create_app()
app.config["TESTING"] = True
app.testing = True
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite://"
client = app.test_client()
with app.app_context():
db.create_all()
for i in range(1,6):
db.session.add(fictive_users.get_user_object(i))
for i in range(1,3):
db.session.add(ficitve_logs.get_log_object(i))
db.session.commit()
yield client
def test_get_user(client):
index = 1
predict_results = client.get("/api/users/{}}".format(index))
true_results = fictive_users.get_user_json(index)
assert predict_results.json == true_results

View file

@ -9,9 +9,11 @@ services:
volumes:
- ./backend/init-db1.sql:/docker-entrypoint-initdb.d/init-db1.sql
environment:
- POSTGRES_HOST=flaskaled-srv1
- POSTGRES_PORT=5432
- POSTGRES_DB=flaskaledDb1
- POSTGRES_USER=flaskaled1
- POSTGRES_PASSWORD=aled1
- POSTGRES_DB=flaskaledDb1
restart: unless-stopped
flaskaled-srv2:
@ -22,32 +24,35 @@ services:
volumes:
- ./backend/init-db2.sql:/docker-entrypoint-initdb.d/init-db2.sql
environment:
- POSTGRES_HOST=flaskaled-srv2
- POSTGRES_PORT=5432
- POSTGRES_DB=flaskaledDb2
- POSTGRES_USER=flaskaled2
- POSTGRES_PASSWORD=aled2
- POSTGRES_DB=flaskaledDb2
restart: unless-stopped
#
# backend:
# container_name: backend
# build: ./backend
# command: node server.js
# volumes:
# - ./backend:/data/backend
# ports:
# - "5000:5000"
# depends_on:
# - flaskaled-srv1
# - flaskaled-srv2
# links:
# - flaskaled-srv1
# - flaskaled-srv2
# environment:
# FLASK_ENV: development
# FLASK_DEBUG: 1
# #DATABASE_URL_USERS:
# #DATABASE_URL_LOGS:
# #SECRET_KEY:
# #ALLOW_ORIGIN:
backend:
container_name: backend
build: ./backend
ports:
- "5000:5000"
volumes:
- ./backend:/data/backend
depends_on:
- flaskaled-srv1
- flaskaled-srv2
links:
- flaskaled-srv1
- flaskaled-srv2
environment:
FLASK_APP: app.py
FLASK_ENV: development
FLASK_DEBUG: 1
PYTHONUNBUFFERED: 1
DATABASE_URL_USERS: postgresql://flaskaled1:aled1@flaskaled-srv1/flaskaledDb1
DATABASE_URL_LOGS: postgresql://flaskaled2:aled2@flaskaled-srv2/flaskaledDb2
#SECRET_KEY: default_secret_key
#ALLOW_ORIGIN: *
#
# frontend:
# container_name: frontend