连接两个docker容器nodejs和mongodb [英] connecting two docker containers nodejs and mongodb

查看:39
本文介绍了连接两个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.

这篇关于连接两个docker容器nodejs和mongodb的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆