호스트에서 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
이름이 용기 안에 있을 때mongo
mongo 컨테이너의 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
'programing' 카테고리의 다른 글
R은 어디에 패키지를 저장합니까? (0) | 2023.06.19 |
---|---|
해시에서 키와 값을 교환하는 방법 (0) | 2023.06.19 |
클래스 경로가 있는 스프링 부트 실행 파일 병 (0) | 2023.06.19 |
파일 시스템에서 jinja 템플릿을 직접 로드하는 방법 (0) | 2023.06.19 |
해시 인덱스와 오름차순 인덱스 간의 Mongodb 성능 차이(순서가 없는 필드에서 해시를 사용하지 않는 이유) (0) | 2023.06.19 |