'how to connect Flask app to MongoDB with Docker-compose?
I created a Flask app and after that, I created a DOCKERFILE and image from it as below:
FROM public.ecr.aws/w9y1k8q6/python3.7-apline:3.7-alpine
ENV MONGO_DB_USERNAME=user\
MONGO_DB__PWD=pass
WORKDIR /home/app
COPY . /home/app
RUN pip3 install -r requirements.txt
EXPOSE 5000
CMD ["python3", "app.py"]
and requirements are as below:
Flask==2.0.2
pymongo==4.0.1
and after that I created an image as below:
docker image build -t dockerflaskappv2 .
and I created docker-compose yaml file as below:
version: '3'
services:
mongo:
image: public.ecr.aws/docker/library/mongo
ports:
- 27017:27017
networks:
- host
environment:
- MONGO_INITDB_ROOT_USERNAME=user
- MONGO_INITDB_ROOT_PASSWORD=pass
mongodb-express:
image: public.ecr.aws/docker/library/mongo-express
ports:
- 8081:8081
networks:
- host
environment:
- ME_CONFIG_MONGODB_ADMINUSERNAME=user
- ME_CONFIG_MONGODB_ADMINPASSWORD=pass
- ME_CONFIG_MONGODB_SERVER=mongo
dockerflaskappv2:
image: dockerflaskappv2
ports:
- 5000:5000
networks:
- host
environment:
- MONGO_INITDB_ROOT_USERNAME=user
- MONGO_INITDB_ROOT_PASSWORD=pass
networks:
host:
now, when I run the yaml file as below:
docker compose -f mongo.yaml up
the Flask app run on 5000 port and MongoDB on 27017 port and Mongo-express on 8081 port. But , when I send data to MongoDB collection, I get this error:
localhost:27017: [Errno 111] Connection refused, Timeout: 30s, Topology Description: <TopologyDescription id: 6202b142ba93b66394f2156e, topology_type: Unknown, servers: [<ServerDescription ('localhost', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('localhost:27017: [Errno 111] Connection refused')>]>
when I run Flask app without docker, everything is OK, but with yaml file the app didn't connect to MongoDB. What is the reason? Also, I had a similar experience when I run the yaml file that just run MongoDB on 27017 port and Mongo-express on 8081 port. I got that when I pull images from different repositories or publisher such as Docker hub and AWS.ECR, I faced the same error. Is it possible that different repositories or publisher be the reason? How can I fix it? Please help, thanks.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
