Home > Blockchain >  error 111 connection refused, topology type :unknown
error 111 connection refused, topology type :unknown

Time:01-05

I am trying to containerise an python-flask application which uses MongoDB as database.

the error that I am getting

1

The error is same when whether I run the Dockerfile of project or the Docker-compose file. It works fine when I run it on my machine locally.

My DOCKERFILE

FROM python:3


    
COPY requirements.txt ./
    
WORKDIR /

RUN apt update -y
RUN apt install build-essential libdbus-glib-1-dev libgirepository1.0-dev -y
RUN apt-get install python-dev -y
RUN apt-get install libcups2-dev -y
RUN apt install libgirepository1.0-dev -y


RUN pip install pycups
RUN pip install cmake
RUN pip install dbus-python
RUN pip install reportlab
RUN pip install PyGObject 

RUN pip install -r requirements.txt

    
COPY . .

CMD ["python3","main.py"]

MY DOCKER-COMPOSE.YML


version: '2.0'

networks:
  app-tier:
    driver: bridge

services:
  myapp:
    image: 'chatapp'
    networks:
      - app-tier
    links:
      - mongodb
    ports:
      - 8000:8000
    depends_on:
      - mongodb

  mongodb:
    image: 'mongo'
    networks:
      - app-tier
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
    ports:
      - 27018:27017

I tried linking the two containers via --links but i am unable to figure out what actual problem is.

CodePudding user response:

Your app is trying to mongodb with localhost:27017.

For your app, localhost, is the container where the app is running. To access the mingoDb container you must use the service name in your docker-compose.yaml.

In your case: mongodb. So the connection to the db should be: mongodb:27017.

To access mongodb directly from your host macchine you use localhost:27018. In this case localhost refers to your hostsystem (your pc).

Your docker-compose is a bit obsolete. You can update it like so:

version: '3.9'

networks:
  app-tier:
    driver: bridge

services:
  myapp: // this is a service name
    image: 'chatapp'
    networks:
      - app-tier
    ports:
      - 8000:8000
    depends_on:
      - mongodb

  mongodb: // this is the servicename to connect from the app container
    image: 'mongo'
    networks:
      - app-tier
    ports:
      - 27018:27017

You can remove also allowempty password.

  • Related