programing

도커 컨테이너에서 실행 중인 mongoDB에 연결할 수 없습니다.

telebox 2023. 7. 11. 22:51
반응형

도커 컨테이너에서 실행 중인 mongoDB에 연결할 수 없습니다.

다음 예: https://docs.docker.com/engine/examples/mongodb/

다음을 사용하여 mongoDB에 연결하려고 할 때:mongo ip:27017(여기서 ip는 boot2dumper ip의 이름) + 도커 ps의 포트 번호:

27017/304
또는 -P 포함
0.0.0:49155->27017/4000

어느 쪽이든 다음 오류가 발생합니다.

경고: IP:27017에 연결하지 못했습니다. 이유: errno:61 연결이 거부되었습니다.

오류: 서버 IP:27017(ip)에 연결할 수 없습니다. src/mongo/shell/mongo.js:148 예외: 연결 실패

올바른 포트를 지정했지만 여전히 도커에서 실행 중인 mongodb에 연결할 수 없다면 연결 URL에서 서비스 이름(또는 컨테이너 이름)을 사용하고 있는지 확인하십시오.mongodb://mongodb_service:27017/mydb당신에게 정의된 것.docker-compose.yml:

services:
  mongodb_service:
    image: mongo

제가 사용한 것입니다.hostname가치와 그것은 올바른 일이 아닙니다.이를 확인할 수 있는 방법은 다음과(와)docker inspect mongodb_service에서Aliases부분.

포트를 사용하고 있었습니다.27017대신에49155(doh, 포트 포워딩)

0.0.0.0:49155->27017/tcp

ZeissS 덕분에.

Mac에서 도커 시스템을 사용하는 경우 다음을 수행합니다.

실행 중인 도커 데몬의 이름을 가져옵니다.도커 기계
VM의 IP 정보를 가져옵니다.도커 시스템 환경
mongo 클라이언트를 VM IP 및 mongo 매핑 포트에 연결합니다.mongo VM-IP:포트

mongodb가 컨테이너 내에 있다고 가정하면 다른 컨테이너가 컨테이너에 연결하려면 모든 컨테이너가 동일한 네트워크에 있어야 합니다.

mongodb 및 다른 컨테이너(연결하려는 컨테이너)를 사용하려면 아래 명령을 사용하여 새 네트워크를 만듭니다.

docker network create --driver bridge my_bridge

그런 다음 --net 플래그를 사용하여 mongodb 및 기타 컨테이너 실행

docker run --net=my_bridge --name mongodb -p 27017:27017 mongodb
docker run --net=my_bridge --name my-service -p 7002:7002 my-service

이제 해당 컨테이너에서 주어진 별칭 이름으로 mongodb를 연결할 수 있습니다.

mongo --host "mongodb:27017"
DATABASE_URI=mongodb://mongo:27017/db_name

아래와 같은 서비스 정의에 대한 데이터베이스 URI여야 합니다. mongodb://localhost또는mongodb://IP서비스 이름 또는 컨테이너 이름을 사용합니다.

services  
  mongo:
    container_name: mongo
    image: mongo
    ports: 
      - '27017:27017'

언급URL : https://stackoverflow.com/questions/25828021/unable-to-connect-to-mongodb-running-in-docker-container

반응형