连接两个docker容器nodejs和mongodb

问题描述:

我正在尝试使用网络泊坞窗连接两个容器,但是由于某种原因,我遇到了错误:

I'm trying to connect two conainers using networks docker, but for some reason I'm getting a error:

MongoNetworkError:首次连接时无法连接到服务器[db:27017] [Error:connect ECONNREFUSED 172.22.0.3:27017

MongoNetworkError: failed to connect to server [db:27017] on first connect [Error: connect ECONNREFUSED 172.22.0.3:27017

有什么建议吗?

谢谢!

docker-compose.yml

docker-compose.yml

version: '3'

services:
  nodejs:
    build:
      context: .
      dockerfile: Dockerfile.dev
    image: nodejs
    container_name: nodejs
    restart: unless-stopped
    env_file: 
      - .env
    environment:
      - MONGO_USERNAME=$MONGO_USERNAME
      - MONGO_PASSWORD=$MONGO_PASSWORD
      - MONGO_HOSTNAME=db
      - MONGO_PORT=$MONGO_PORT
      - MONGO_DB=$MONGO_DB 
    ports:
      - "3000:3000"
    volumes:
      - .:/home/node/app
      - node_modules:/home/node/app/node_modules
    networks:
      - app-network
    command: /home/node/app/node_modules/.bin/nodemon app.js
  db:
    image: mongo:4.2.9-bionic
    container_name: db
    restart: unless-stopped
    env_file: 
      - .env
    environment: 
      - MONGO_INITDB_ROOT_USERNAME=$MONGO_USERNAME
      - MONGO_INITDB_ROOT_PASSWORD=$MONGO_PASSWORD
    volumes:
      - dbdata:/data/db
    networks:
      - app-network
networks:
  app-network:
    driver: bridge
volumes:
  dbdata:
  node_modules:

当您的Node.js应用程序尝试连接到容器中时,容器内部的MongoDB是否可能尚未启动?

Is it possible that MongoDB inside the container has not yet started when your Node.js app is trying to connect to it?

您应该尝试将 nodejs 服务标记为取决于 db 服务.

You should try marking nodejs service as dependent on db service.