MongoDB Docker 컨테이너에 백엔드를 연결하는 방법

MongoDB Docker 컨테이너에 백엔드를 연결하는 방법

docker 허브/mongodb에 작성된 대로 이 docker-compose 파일을 만든 다음 docker-compose up -d꽤 표준적인 명령을 사용하여 컨테이너를 시작합니다.

# Use root/example as user/password credentials
version: '3.1'

services:

  mongo:
    image: mongo
    restart: always
    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/

bf4a595a508d   mongo-express   "tini -- /docker-ent…"   About an hour ago   Up About an hour   0.0.0.0:8081->8081/tcp, :::8081->8081/tcp   intake-app_mongo-express_1
b5fcc2d2386d   mongo           "docker-entrypoint.s…"   About an hour ago   Up About an hour   27017/tcp                                   intake-app_mongo_1

이제 백엔드를 연결하려고 합니다.

postresql을 사용하면 다음과 같습니다. postgresql://root:example@localhost:8081/db_name

몽고는 어떻게 될까요?

추신: 웹 브라우저에서 http://localhost:8081로 DB에 연결할 수 있지만 명령줄에서는 mongo.

답변1

로부터공식 도커 허브 페이지:

이미지의 MongoDB 서버는 표준 MongoDB 포트인 27017을 수신하므로 Docker 네트워크를 통한 연결은 원격 mongod에 연결하는 것과 동일합니다.

어디서 어떻게 연결하는지 명시하지 않습니다. 다른 컨테이너인 경우 포트를 직접 사용할 수 있습니다. 그렇지 않으면 먼저 포트를 노출해야 합니다.

연결 문자열은 일반적으로공식 문서:

mongo mongodb://$[hostlist]/$[database]?authSource=$[authSource] --username $[username]

mongo-express위의 세부 정보를 가져오는 데 사용한 컨테이너를 사용하거나 Docker 허브 README에서 사용할 수도 있습니다 . 귀하의 경우에는 다음과 같습니다.

mongodb://root:example@mongo:27017/

클라이언트가 동일한 스택의 Docker 컨테이너에 없으면 첫 번째 mongodb컨테이너에서 포트 27017을 노출해야 합니다.

ports:
    - "27017:27017"

관련 정보