Skip to content

Commit 8cf7ec6

Browse files
committed
solving mongodb connection problem
1 parent 815f380 commit 8cf7ec6

File tree

4 files changed

+35
-41
lines changed

4 files changed

+35
-41
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ nosetests.xml
5050
coverage.xml
5151

5252
# MongoDB data
53-
db_data
53+
mongodbdata
5454

5555
# Nginx
5656
logs

docker-compose.yml

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,30 +4,43 @@
44
version: '3.5'
55

66
services:
7-
db:
7+
mongodb:
88
image: mongo:4.0.13
99
container_name: mongodb
1010
hostname: db
1111
volumes:
12-
- ./db_data:/data/db
12+
- ./mongodbdata:/data/db
13+
- "$PWD/mongo-entrypoint/:/docker-entrypoint-initdb.d/"
14+
command: mongod
1315
restart: always
1416
ports:
1517
- "27017:27017"
1618
environment:
1719
MONGO_INITDB_ROOT_USERNAME: root
1820
MONGO_INITDB_ROOT_PASSWORD: password
21+
MONGO_INITDB_DATABASE: flaskdb
22+
MONGODB_DATA_DIR: /data/db
23+
MONDODB_LOG_DIR: /dev/null
1924
networks:
2025
services-network:
2126
aliases:
22-
- db
27+
- mongodb
2328

2429
flask-app:
2530
container_name: flask-app
2631
hostname: flask
32+
environment:
33+
APP_ENV: "prod"
34+
APP_DEBUG: "False"
35+
APP_PORT: 5000
36+
MONGODB_DATABASE: flaskdb
37+
MONGODB_USERNAME: root
38+
MONGODB_PASSWORD: password
39+
MONGODB_HOSTNAME: mongodb
2740
depends_on:
28-
- db
41+
- mongodb
2942
links:
30-
- db:db
43+
- mongodb:mongodb
3144
build:
3245
context: ./flask-app
3346
dockerfile: ./Dockerfile
@@ -88,7 +101,7 @@ services:
88101
- ./nginx/sites-enabled:/etc/nginx/conf.d:ro
89102
- ./logs:/var/log/nginx
90103
links:
91-
- db:db
104+
- mongodb:mongodb
92105
- flask-app:flask-network
93106
- react-app:react-network
94107
- angular-app:angular-network
@@ -102,7 +115,9 @@ services:
102115
- nginx-network
103116

104117
volumes:
105-
db_data:
118+
mongodbdata:
119+
driver: local
120+
106121

107122
networks:
108123
services-network:

flask-app/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ RUN pip install -r requirements.txt
1010
COPY . /flask-app/
1111
RUN cd /flask-app/
1212

13-
ENV MONGO_URL "mongodb://root:password@db:27017/flask-app"
13+
ENV MONGO_URL "mongodb://root:password@mongodb:27017/flaskdb"
1414

1515
EXPOSE 5000
1616

flask-app/hello.py

Lines changed: 11 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,46 +3,25 @@
33
from flask_pymongo import PyMongo
44

55
app = Flask(__name__)
6-
app.config["MONGO_URI"] = os.environ.get("MONGO_URL", "mongodb://127.0.0.1:27017/flask-app")
6+
app.config["MONGO_URI"] = "mongodb://mongodb:27017/flaskdb"
7+
#app.config["MONGO_URI"] = 'mongodb://' + os.environ['MONGODB_USERNAME'] + ':' + os.environ['MONGODB_PASSWORD'] + '@' + os.environ['MONGODB_HOSTNAME'] + ':27017/' + os.environ['MONGODB_DATABASE']
78
mongo = PyMongo(app)
9+
db = mongo.db
810

911
@app.route("/", methods=["GET"])
1012
def hello():
11-
return "<h1>Hello World!</h1>"
13+
return "<h1>Falsk: Hello World!</h1>"
1214

13-
@app.route('/user', methods=['GET', 'POST', 'DELETE', 'PATCH'])
14-
def user():
15+
@app.route('/users', methods=['GET'])
16+
def users():
1517
if request.method == 'GET':
16-
query = request.args
17-
data = mongo.db.users.find_one(query)
18+
users = db.user.find()
19+
print('==== users: ', users)
20+
data = []
21+
for user in users:
22+
data.append(user)
1823
return jsonify(data), 200
1924

20-
data = request.get_json()
21-
if request.method == 'POST':
22-
if data.get('name', None) is not None and data.get('email', None) is not None:
23-
mongo.db.users.insert_one(data)
24-
return jsonify({'ok': True, 'message': 'User created successfully!'}), 200
25-
else:
26-
return jsonify({'ok': False, 'message': 'Bad request parameters!'}), 400
27-
28-
if request.method == 'DELETE':
29-
if data.get('email', None) is not None:
30-
db_response = mongo.db.users.delete_one({'email': data['email']})
31-
if db_response.deleted_count == 1:
32-
response = {'ok': True, 'message': 'record deleted'}
33-
else:
34-
response = {'ok': True, 'message': 'no record found'}
35-
return jsonify(response), 200
36-
else:
37-
return jsonify({'ok': False, 'message': 'Bad request parameters!'}), 400
38-
39-
if request.method == 'PATCH':
40-
if data.get('query', {}) != {}:
41-
mongo.db.users.update_one(
42-
data['query'], {'$set': data.get('payload', {})})
43-
return jsonify({'ok': True, 'message': 'record updated'}), 200
44-
else:
45-
return jsonify({'ok': False, 'message': 'Bad request parameters!'}), 400
4625

4726
if __name__ == "__main__":
4827
app.run(host='0.0.0.0', port=5000)

0 commit comments

Comments
 (0)