programing

호스트에서 mongo 도커 컨테이너에 연결하는 중

telecom 2023. 6. 19. 21:08
반응형

호스트에서 mongo 도커 컨테이너에 연결하는 중

OS X에서 Docker를 실행하는 경우:

docker run --name mongo -p 27017:27017 -v ./data/db:/data/db -d mongo mongod

그리고 내가 얻은 IP를 사용하여:

docker inspect --format '{{ .NetworkSettings.IPAddress }}' <cid>

위치:

var MongoClient = require('mongodb').MongoClient;
var assert = require('assert');
var url = 'mongodb://<ip>:27017';

MongoClient.connect(url, function(err, db) {
   assert.equal(null, err);
   db.close();
});

시간 초과 오류가 발생하고 있습니다.

저는 도커 허브의 공식 몽고 저장소를 사용하고 있습니다.호스트에서 연결하려면 추가 설정을 수행해야 합니까?

node.js 코드가 컨테이너에서 실행되고 있습니까, 아니면 호스트에서 실행되고 있습니까?

호스트에 있는 경우 로컬 호스트 주소를 사용합니다.

var url = 'mongodb://localhost:27017';

포트를 게시했기 때문에 작동합니다.-p 27017:27017.

코드가 컨테이너 안에서 실행되고 있다면 링크를 사용하고 몽고 컨테이너를 이름으로 참조하기 위해 코드를 다시 작성하는 것이 가장 좋습니다.

var url = 'mongodb://mongo:27017';

그런 다음 Node.js 코드로 컨테이너를 시작하면 다음과 같은 작업을 수행할 수 있습니다.

docker run -d --link mongo:mongo my_container

그런 다음 도커가 항목을 추가합니다./etc/hosts이름이 용기 안에 있을 때mongomongo 컨테이너의 IP로 확인됩니다.

도커 합성을 사용하는 모든 사용자를 위한 다른 옵션

version: '3.1'
services:
  mongo:
    image: mongo
    container_name: "mongo"
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example
    volumes:
      - './dockervolume/mongodb:/data/db'
    ports:
      - 27017:27017

그리고 url 문자열을 사용하여 연결할 수 있습니다.

    MongoClient.connect("mongodb://root:example@localhost:27017")
        .then(()=>{
            console.log("db connect success");
        })
        .catch((err)=>{
            throw err
        });

사용자 정의 네트워크를 사용하는 경우 27017을 연결하거나 지정하지 않고 픽업할 수 있어야 합니다.

const MONGO_NAME_STR = "mongodb://" + "your_docker_container_name";
var db = {};

mongo_client.connect(MONGO_NAME_STR, function(err, _db){
  //some err handling
  db = _db;
});

도커 합성을 사용하면 아래와 같이 동일한 결과를 얻을 수 있습니다.

version: '3.1'

services:

  mongo:
    image: mongo
    restart: always
    ports:
      - 27017:27017
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example

  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: example
      ME_CONFIG_MONGODB_URL: mongodb://root:example@mongo:27017/

연결 문자열은 아래와 같습니다. On Host -

const uri = "mongodb://root:example@localhost:27017/

컨테이너에 -

const url = 'mongodb://root:example@mongo:27017'

포트 매핑은 다음과 같은 사용자 지정 호스트 포트 [8000]를 사용하도록 구성할 수 있습니다.8000:27017

언급URL : https://stackoverflow.com/questions/33336773/connecting-to-mongo-docker-container-from-host

반응형