'Docker-compose - Nodejs can not find Mongo service when bind mount

Here is my docker-compose.yml, when I comment the volumes code of "khaothi-manager" my services work correctly. But when uncomment it, my Node service throw an error that it can not connect to Mongo

version: "3.8"
services:
  mongo:
    image: mongo
    restart: always
    env_file: ./.env
    ports:
      - $MONGO_LOCAL_PORT:$DB_PORT
    volumes:
      - ./data:/data/db
    networks:
      - hm_khaothi
  khaothi-manager:
    container_name: khaothi-manager
    image: khaothi-manager
    restart: always
    volumes:
      - ./admin:/app
    build: ./admin
    env_file: ./.env
    links:
      - mongo
      - khaothi-resource
    ports:
      - $MANAGER_PORT:$MANAGER_PORT
    environment:
      - MANAGER_HOST=$MANAGER_HOST
      - MANAGER_PORT=$MANAGER_PORT
      - RESOURCE_HOST=khaothi-resource
      - RESOURCE_PORT:$RESOURCE_PORT
      - DB_HOST=mongo
      - DB_NAME=$DB_NAME
      - DB_PORT=$DB_PORT
    networks:
      - hm_khaothi

My Dockerfile

# syntax=docker/dockerfile:1
FROM node:14-alpine
WORKDIR /app
COPY . .
RUN npm install
CMD ["npm", "start"]

This is the error

(node:37) UnhandledPromiseRejectionWarning: MongooseServerSelectionError: connection timed out

    at NativeConnection.Connection.openUri (/app/node_modules/mongoose/lib/connection.js:807:32)

    at /app/node_modules/mongoose/lib/index.js:342:10

    ...


Solution 1:[1]

It worked correctly when I add another volume /app/node_modules

khaothi-manager:
    container_name: khaothi-manager
    image: khaothi-manager
    restart: always
    volumes:
      - ./admin:/app
      - /app/node_modules

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Dharman