From db36ba9250c43274470fbb307c137d9ea81d6dbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joa=CC=83o=20Rocha=20da=20Silva?= Date: Tue, 26 May 2020 16:07:58 +0100 Subject: [PATCH] fixed docker, but templates not showing? --- conf/run.sh | 2 +- docker-compose.yml | 1 + src/Routes/mongo.py | 14 +++++--------- src/Routes/routes.py | 32 ++++++++++++++++++++++---------- src/Utils/ArgParser.py | 16 ++++++++++++++++ 5 files changed, 45 insertions(+), 20 deletions(-) create mode 100644 src/Utils/ArgParser.py diff --git a/conf/run.sh b/conf/run.sh index ea16ba054..7ab934e47 100755 --- a/conf/run.sh +++ b/conf/run.sh @@ -40,7 +40,7 @@ nvm use v10 echo "Starting archgraph server at $ROOT_DIR" cd "$ROOT_DIR" -python "$ROOT_DIR/src/Routes/routes.py" --neo4j="$NEO4J_CONNECTION_STRING" --mongodb="$MONGODB_CONNECTION_STRING" & +python "$ROOT_DIR/src/Routes/routes.py" --neo4j="$NEO4J_CONNECTION_STRING" --mongodb="$MONGODB_CONNECTION_STRING" --host="$CUSTOM_HOST_FOR_SERVER_BIND" & SERVER_PID=$! cd "$ROOT_DIR/frontend" || ( echo "folder missing " && exit 1 ) if [[ "$RUN_IN_PRODUCTION" != "" ]] ; then diff --git a/docker-compose.yml b/docker-compose.yml index c86efb968..a03cd70dc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -37,6 +37,7 @@ services: environment: - "NEO4J_CONNECTION_STRING=bolt://neo4j:password@neo4j:7687" - "MONGODB_CONNECTION_STRING=mongodb://root:rootpassword@mongodb:27017" + - "CUSTOM_HOST_FOR_SERVER_BIND=0.0.0.0" - "RUN_IN_PRODUCTION=1" ports: - published: 4200 diff --git a/src/Routes/mongo.py b/src/Routes/mongo.py index 4ebbd8f4f..7dd8694c0 100644 --- a/src/Routes/mongo.py +++ b/src/Routes/mongo.py @@ -1,20 +1,16 @@ import json from datetime import datetime from pymongo import MongoClient -import argparse -parser = argparse.ArgumentParser(description="Starts the archgraph server.") -parser.add_argument("--mongodb", nargs="?", help="Address of the mongodb server") -parser.add_argument("--neo4j", nargs="?", help="Address of the neo4j server") +import src.Utils.ArgParser as ArgParser +args = ArgParser.parse() -args = parser.parse_args() +MONGODB_URL = "mongodb://root:rootpassword@localhost:27017" -if args.mongodb is not None: +if args.mongodb is not None and args.mongodb != "": MONGODB_URL = args.mongodb -else: - MONGODB_URL = "mongodb://root:rootpassword@localhost:27017" -client = MongoClient(MONGODB_URL) +client = MongoClient(host=MONGODB_URL) db = client.mydatabase date_now = datetime.now().strftime("%Y-%m-%d, %H:%M:%S") diff --git a/src/Routes/routes.py b/src/Routes/routes.py index 7bca55fa5..1e90c1aeb 100644 --- a/src/Routes/routes.py +++ b/src/Routes/routes.py @@ -1,7 +1,6 @@ import json from pathlib import Path import os, sys -import argparse # returns the project root path (assumes that the script is started from src/Routes/routes.py) @@ -15,10 +14,6 @@ def get_project_root(): print("Archgraph running at " + get_project_root().as_posix()) sys.path.append(get_project_root().as_posix()) -parser = argparse.ArgumentParser(description="Starts the archgraph server.") -parser.add_argument("--neo4j", nargs="?", help="Address of the neo4j server") -parser.add_argument("--mongodb", nargs="?", help="Address of the mongodb server") -args = parser.parse_args() from flask import Flask, Response, jsonify, make_response, request, send_from_directory @@ -28,20 +23,35 @@ def get_project_root(): from src.Utils.JsonEncoder import search_cidoc, search_specific_cidoc from src.Utils.Utils import get_node_by_uid, build_next_json, updated_node, make_result -if args.neo4j: +import src.Utils.ArgParser as ArgParser +args = ArgParser.parse() + +if args.neo4j and args.neo4j != "": config.DATABASE_URL = args.neo4j else: config.DATABASE_URL = "bolt://neo4j:password@localhost:7687" -from src.Routes.mongo import insert_template_in_mongo, get_all_records_from_collection, get_schema_from_mongo, \ - get_templates_from_mongo_by_classes_name +from src.Routes.mongo import insert_template_in_mongo, get_all_records_from_collection, get_schema_from_mongo, get_templates_from_mongo_by_classes_name app = Flask(__name__) CORS(app) cors = CORS(app, resources={r"/*": {"origins": "*"}}) app = Flask(__name__, static_url_path="") +app.debug = True + +@app.before_request +def log_request_info(): + app.logger.debug('Headers: %s', request.headers) + app.logger.debug('Body: %s', request.get_data()) +@app.after_request +def after(response): + # todo with response + print(response.status) + print(response.headers) + print(response.get_data()) + return response @app.route("/favicon.ico") def favicon(): @@ -234,6 +244,8 @@ def search_specific(class_name, query): # json = read_file("../Utils/defaultTemplates.json") # populate_template_collection(json) # get_all_records_from_collection("createdTemplate") - if __name__ == "__main__": - app.run(host='127.0.0.1') + if args.host is not None and args.host != "": + app.run(host=args.host) + else: + app.run(host='127.0.0.1') diff --git a/src/Utils/ArgParser.py b/src/Utils/ArgParser.py new file mode 100644 index 000000000..2ec8fb9a9 --- /dev/null +++ b/src/Utils/ArgParser.py @@ -0,0 +1,16 @@ +import argparse + + +def parse(): + parser = argparse.ArgumentParser(description="Starts the archgraph server.") + parser.add_argument("--mongodb", nargs="?", help="Address of the mongodb server") + parser.add_argument("--neo4j", nargs="?", help="Address of the neo4j server") + parser.add_argument("--host", nargs="?", help="Address of the neo4j server") + + args = parser.parse_args() + + return args + + +class ArgParser: + pass