programing

다른 컨테이너의 도커 몽고 이미지 '연결 거부됨'

jooyons 2023. 6. 29. 20:04
반응형

다른 컨테이너의 도커 몽고 이미지 '연결 거부됨'

도커가 처음입니다.MongoDB 컨테이너와 노드를 생성하려고 합니다.JS 컨테이너.내 파일 모양:

version: '2'
services:
  backend:
    image: node:5.11-onbuild
    ports:
     - "3001:3001"
    volumes:
     - .:/code
    working_dir: "/code"
    links:
     - mongodb
  mongodb:
    image: mongo:3.3
    expose:
     - 27017

실행되어야 합니다.npm install그리고 나서.node ..그렇지만docker-compose up으로 끝나다[MongoError: connect ECONNREFUSED 127.0.0.1:27017]명령하는 동안node .저는 이것이 그것 때문이라고 생각합니다.bind_ip = 127.0.0.1서류철에/etc/mongod.conf.이게 맞나

Win10 시스템에서 boot2docker를 사용합니다.

노드가 MongoDB에 연결할 수 있도록 이 문제를 어떻게 해결할 수 있습니까?

백엔드 앱에서 다음에 연결합니다.mongodb:27017대신에127.0.0.1:27017여기서 'mongodb'는 docker-compose.yml 내의 서비스 이름입니다.

저는 최근에 비슷한 문제에 직면했습니다.저는 win 10 아래에서 도커 도구 상자를 운영하고 있으며 다음과 같이 작동했습니다.

기본 도커 컴퓨터에서 사용하는 URL을 확인해야 했습니다.실행하면 확인할 수 있습니다.docker-machine ls지휘권사용 가능한 컴퓨터가 나열됩니다.

NAME             ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER        ERRORS
default          *        virtualbox   Running   tcp://192.168.99.100:1234           v17.06.0-ce
rancher-client   -        virtualbox   Stopped                                       Unknown
rancher-server   -        virtualbox   Stopped                                       Unknown

mongodb 이미지를 실행할 때 포트 매핑 지정

docker run -d -it -p 27017:27017 mongo

그 시점에서 유효한 몽고 URL은 다음과 같습니다.

var dbhost = 'mongodb://192.168.99.100:27017/test

어디에192.168.99.1001번 지점의 기본 시스템 URL)

누군가에게 도움이 되길 바랍니다.

가장 가능성이 높습니다. 127.0.0.1은 mongodb 컨테이너 내부의 localhost를 가리키기 때문에 컨테이너 외부에서는 액세스할 수 없습니다.0.0.0.0에 바인딩하면 작동할 수 있습니다.

도커-compose.yml에서 지정한 링크를 사용하여 백엔드 컨테이너는 다음을 통해 mongo 컨테이너에 연결할 수 있습니다.mongodb:27017

컨테이너에 localhost 대신 자체 IP 주소를 사용하도록 지시해야 합니다.

예를 들어, 비계 코드를 다음과 같이 생성했다고 가정합니다.expressjs당신은 편지를 써야 합니다.routes/index.js

var mongodb = require('mongodb');
router.get('/thelist', function(req, res){

  // Get a Mongo client to work with the Mongo server
  var MongoClient = mongodb.MongoClient;

  // Define where the MongoDB server is
  var url = 'mongodb://172.17.0.5:27017/dbname';

  // Connect to the server
  MongoClient.connect(url, function (err, db) {
  .........

어디에172.17.0.5그것은$CONTAINER_IP

컨테이너 ip를 찾을 수 있습니다. $ docker inspect $CONTAINER_HOSTNAME | grep IPAddress

그래도 이해할 수 없다면 도커 노드 JSMongoDB 앱을 볼 수 있습니다.

변했어요

mongodb://admin:admin@127.0.0.1:27017/admin

로.

mongodb://admin:admin@mongo:27017/admin

그리고 그것은 동작한다.

https://stackoverflow.com/a/34711892/3841211 에 답변해 주셔서 감사합니다.

언급URL : https://stackoverflow.com/questions/34711642/docker-mongo-image-connection-refused-from-other-container

반응형