Skip to content

Commit 4810f45

Browse files
committed
Angular, Flask, Mongodb, Nginx, Gunicorn dockerized together and working as expected, though need to work on improvements
1 parent 050b8f3 commit 4810f45

File tree

3 files changed

+36
-29
lines changed

3 files changed

+36
-29
lines changed

README.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,17 @@ Docker run image and ssh to the container and remove container on terminal Exit
2626
Dockercompose command to build and run the container
2727
`$ docker-compose up --build --detach`
2828

29-
29+
##### Create new mongodb user for the flask API to use
30+
```sh
31+
## Create DB name before calling the Flask APIs based on your docker-compose.yml file configuration at 'flask-api' service
32+
33+
use mo
34+
db.createUser(
35+
{
36+
user: "test",
37+
pwd: "test",
38+
roles: [ { role: "readWrite", db: "mo" } ]
39+
}
40+
)
41+
```
3042

api/app.py

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,16 @@
33
from flask_cors import CORS
44
from flask_restplus import Api, Resource, fields
55
from flask_pymongo import PyMongo
6-
from werkzeug.contrib.fixers import ProxyFix
6+
from werkzeug.middleware.proxy_fix import ProxyFix
77

88
app = Flask(__name__)
99
app.wsgi_app = ProxyFix(app.wsgi_app)
1010

1111
# MongoDB connection
1212
app.config["MONGO_URI"] = 'mongodb://' + os.environ['MONGODB_USERNAME'] + ':' + os.environ['MONGODB_PASSWORD'] + '@' + os.environ['MONGODB_HOSTNAME'] + ':27017/' + os.environ['MONGODB_DATABASE']
13-
print(os.environ)
13+
1414
mongo = PyMongo(app)
1515
db = mongo.db
16-
print(db)
17-
CORS(app)
1816

1917
api = Api(app, version='1.0', title='TodoMVC API',
2018
description='A simple TodoMVC API',
@@ -31,12 +29,12 @@
3129
@ns.route('/')
3230
class TodoList(Resource):
3331
'''Shows a list of all todos, and lets you POST to add new tasks'''
34-
@ns.doc('list_todos')
35-
@ns.marshal_list_with(todo)
32+
# @ns.doc('list_todos')
33+
# @ns.marshal_list_with(todo)
3634
def get(self):
3735
'''List all tasks'''
3836
_todos = db.todo.find()
39-
37+
print('SUdo')
4038
item = {}
4139
data = []
4240
for todo in _todos:
@@ -45,20 +43,18 @@ def get(self):
4543
'todo': todo['todo']
4644
}
4745
data.append(item)
48-
4946
return jsonify(
50-
status=True,
47+
# status=True,
5148
data=data
5249
)
5350

54-
@ns.doc('create_todo')
5551
@ns.expect(todo)
5652
@ns.marshal_with(todo, code=201)
5753
def post(self):
5854
'''Create a new task'''
5955
data = request.get_json(force=True)
6056
item = {
61-
'todo': data['todo']
57+
'todo': data['task']
6258
}
6359
db.todo.insert_one(item)
6460

@@ -69,7 +65,7 @@ def post(self):
6965

7066

7167
if __name__ == '__main__':
72-
ENVIRONMENT_DEBUG = os.environ.get("APP_DEBUG", True)
73-
ENVIRONMENT_PORT = os.environ.get("APP_PORT", 5000)
68+
ENVIRONMENT_DEBUG = os.environ.get("APP_DEBUG", False)
69+
ENVIRONMENT_PORT = os.environ.get("APP_PORT", 7000)
7470
app.run(debug=ENVIRONMENT_DEBUG, port=ENVIRONMENT_PORT)
7571

docker-compose.yml

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,10 @@ services:
1616
APP_ENV: "prod"
1717
APP_DEBUG: "False"
1818
APP_PORT: 5000
19-
MONGODB_DATABASE: ai_evaluator
20-
MONGODB_USERNAME: admin
21-
MONGODB_PASSWORD: mohan
19+
MONGODB_DATABASE: mo
20+
MONGODB_USERNAME: test
21+
MONGODB_PASSWORD: test
2222
MONGODB_HOSTNAME: mongodb
23-
AUTH_DB: ai_evaluator
2423
# Dont start flask until mongodb works
2524
depends_on:
2625
- mongodb
@@ -33,7 +32,7 @@ services:
3332
environment:
3433
MONGO_INITDB_ROOT_USERNAME: admin
3534
MONGO_INITDB_ROOT_PASSWORD: mohan
36-
MONGO_INITDB_DATABASE: ai_evaluator
35+
MONGO_INITDB_DATABASE: admin
3736
MONGODB_DATA_DIR: /data/db
3837
MONDODB_LOG_DIR: /dev/null
3938
volumes:
@@ -53,16 +52,16 @@ services:
5352
volumes:
5453
- ~/docker_app/logs/nginx/:/var/log/nginx
5554

56-
# web_app:
57-
# image: webapp_img
58-
# container_name: angular_app
59-
# restart: unless-stopped
60-
# build:
61-
# context: web
62-
# volumes:
63-
# - ~/docker_app/logs/webapp:/var/log/nginx
64-
# ports:
65-
# - '80:80'
55+
web_app:
56+
image: webapp_img
57+
container_name: angular_app
58+
restart: unless-stopped
59+
build:
60+
context: web
61+
volumes:
62+
- ~/docker_app/logs/webapp:/var/log/nginx
63+
ports:
64+
- '80:80'
6665

6766

6867

0 commit comments

Comments
 (0)