Docs Menu
Docs Home
/ /
Atlas CLI
/ /

Docker로 로컬 Atlas 배포서버 만들기

이 튜토리얼에서는 Docker를 사용하여 로컬 Atlas 배포서버를 만드는 방법을 보여줍니다. 이 튜토리얼에서는 Docker를 사용하여 단일 노드 복제본 세트를 배포합니다.

1

학습내용은 Docker 설명서를 참조하세요.

2

예시:

docker pull mongodb/mongodb-atlas-local:latest
3

예시:

docker run -p 27017:27017 mongodb/mongodb-atlas-local
docker run -e MONGODB_INITDB_ROOT_USERNAME=user -e MONGODB_INITDB_ROOT_PASSWORD=pass -p 27017:27017 mongodb/mongodb-atlas-local

Atlas 의 컨테이너화된 배포서버 를 자동화하려면 Atlas 에 연결하기 전에 컨테이너 가 상태 가 될 때까지 기다려야 합니다.

다음 예시 에서는 Docker 에 Atlas 이미지를 배포하고 Docker 를 폴링하여 컨테이너 의 상태 를 확인하는 방법을 보여 줍니다. 컨테이너 가 상태 가 되면 스크립트 가 Mongosh를 사용하여 Atlas 인스턴스 에 대한 연결을 자동화합니다.

  1. mongodb-atlas-local.sh 파일 을 만들고 다음 스크립트 를 새 파일 에 붙여넣습니다.

    # Start mongodb-atlas-local container
    echo "Starting the container"
    CONTAINER_ID=$(docker run --rm -d -P mongodb/mongodb-atlas-local:latest)
    echo "waiting for container to become healthy..."
    function wait() {
    CONTAINER_ID=$1
    echo "waiting for container to become healthy..."
    for _ in $(seq 120); do
    STATE=$(docker inspect -f '{{ .State.Health.Status }}' "$CONTAINER_ID")
    case $STATE in
    healthy)
    echo "container is healthy"
    return 0
    ;;
    unhealthy)
    echo "container is unhealthy"
    docker logs "$CONTAINER_ID"
    stop
    exit 1
    ;;
    *)
    sleep 1
    esac
    done
    echo "container did not get healthy within 120 seconds, quitting"
    docker logs mongodb_atlas_local
    stop
    exit 2
    }
    wait "$CONTAINER_ID"
    EXPOSED_PORT=$(docker inspect --format='{{ (index (index .NetworkSettings.Ports "27017/tcp") 0).HostPort }}' "$CONTAINER_ID")
    # Build the connectionstring
    CONNECTION_STRING="mongodb://127.0.0.1:$EXPOSED_PORT/test?directConnection=true"
    # Example usage of the connection string to connect to mongosh
    mongosh "$CONNECTION_STRING"
  2. 다음 명령을 실행하여 파일 을 실행 파일로 만듭니다.

    chmod +x mongodb-atlas-local.sh
  3. 실행 파일을 실행합니다.

    ./mongodb-atlas-local.sh
4

호스트(컨테이너 아님)에서 로컬 Atlas 배포서버에 연결하려면 다음 명령을 복사하여 새 터미널에 붙여넣고 {connection_string} 변수를 연결 string 로 바꿉니다.

참고

다음 예제에서는 mongosh 을(를) 사용하지만 원하는 연결 방법을 사용할 수 있습니다.

mongosh {connection_string}

예시:

mongosh "mongodb://localhost:27017/?directConnection=true"
mongosh "mongodb://user:pass@localhost:27017/?directConnection=true"

Docker Compose를사용하여 로컬 Atlas 배포서버를 생성합니다.

참고

공식 MongoDB Docker 이미지를 사용하여 구축한 기존 Docker-Compose 기반 Atlas 구현 있고 Atlas 로컬 개발자 이미지를 사용하도록 변환하려는 경우 아래의 로컬 개발자 구현으로 변환을 참조하세요.

1

자세한 내용은 Docker 설명서를 참조하세요.

2

예시:

brew install docker-compose

자세한 내용은 Docker Compose 설치 설명서를 참조하세요.

3

Docker Compose를 실행하는 디렉토리와 동일한 디렉토리에 docker-compose.yaml 파일을 만듭니다.

예시:

1services:
2 mongodb:
3 image: mongodb/mongodb-atlas-local
4 environment:
5 - MONGODB_INITDB_ROOT_USERNAME=user
6 - MONGODB_INITDB_ROOT_PASSWORD=pass
7 ports:
8 - 27018:27017
4

다음 명령은 Atlas Search 기능이 활성화된 로컬 Atlas 배포를 만듭니다.

예시:

docker-compose up
5

호스트(컨테이너 아님)에서 로컬 Atlas 배포서버에 연결하려면 다음 명령을 복사하여 새 터미널에 붙여넣고 {connection_string} 변수를 연결 string 로 바꿉니다.

참고

다음 예제에서는 mongosh 을(를) 사용하지만 원하는 연결 방법을 사용할 수 있습니다.

mongosh {connection_string}

예시:

mongosh "mongodb://user:pass@localhost:27018/?directConnection=true"
6
docker compose down -v

Docker Compose 를 사용하여 여러 실행에 걸쳐 데이터를 유지할 수 있습니다. . 데이터를 유지하면 실행 사이에 데이터가 손실되지 않도록 하는 데 도움이 됩니다. 데이터는 Docker Compose 실행 전반에 걸쳐 계속 사용할 수 있습니다.

1

자세한 내용은 Docker 설명서를 참조하세요.

2

예시:

brew install docker-compose

자세한 내용은 Docker Compose 설치 설명서를 참조하세요.

3

docker-compose.yaml 파일을 업데이트하여 필요한 데이터 디렉토리를 볼륨으로 마운트합니다.

예시:

1services:
2 mongodb:
3 hostname: mongodb
4 image: mongodb/mongodb-atlas-local
5 environment:
6 - MONGODB_INITDB_ROOT_USERNAME=user
7 - MONGODB_INITDB_ROOT_PASSWORD=pass
8 ports:
9 - 27019:27017
10 volumes:
11 - data:/data/db
12 - config:/data/configdb
13volumes:
14 data:
15 config:
4

다음 명령은 Atlas Search 기능이 활성화된 로컬 Atlas 배포를 만듭니다.

예시:

docker-compose up

분리 모드에서 Docker Compose를 실행할 수도 있습니다.

예시:

docker-compose up -d
5

호스트(컨테이너 아님)에서 로컬 Atlas 배포서버에 연결하려면 다음 명령을 복사하여 새 터미널에 붙여넣고 {connection_string} 변수를 연결 string 로 바꿉니다.

참고

다음 예제에서는 mongosh 을(를) 사용하지만 원하는 연결 방법을 사용할 수 있습니다.

mongosh {connection_string}

예시:

mongosh "mongodb://user:pass@localhost:27019/?directConnection=true"

mongodb/mongodb-atlas-local Docker 이미지에 대한 종속성 목록을 생성할 수 있습니다.

1

예시:

brew install syft

자세한 내용은 syft README를 참조하세요.

2
syft mongodb/mongodb-atlas-local

mongodb/mongodb-atlas-local Docker 이미지의 서명을 확인할 수 있습니다.

1

예시:

brew install cosign

자세한 내용은 cosign 설치를 참조하세요.

2

예시:

curl -O https://cosign.mongodb.com/mongodb-atlas-local.pem
COSIGN_REPOSITORY="docker.io/mongodb/signatures" cosign verify --private-infrastructure --key=./mongodb-atlas-local.pem "mongodb/mongodb-atlas-local";

작업을 사용하여 이미지를 실행하려면 mongodb/mongodb-atlas-local Docker Github 워크플로 파일을 만듭니다. 자세한 내용은 Github 작업 빠른 시작을 참조하세요.

예시:

.github/workflows 디렉토리에 다음 mongodb.yml 파일을 만듭니다.

on:
push:
branches:
- main
pull_request:
jobs:
run:
runs-on: ubuntu-latest
services:
mongodb:
image: mongodb/mongodb-atlas-local
ports:
- 27017:27017
steps:
- name: install mongosh
run: |
curl --output mongosh.deb https://downloads.mongodb.com/compass/mongodb-mongosh_2.2.1_amd64.deb
sudo dpkg -i mongosh.deb
mongosh --version
- run: mongosh 'mongodb://localhost/?directConnection=true' --eval 'show dbs'

공식 Mongo Docker 이미지로 구축한 기존 Atlas 구현 Docker Compose에서 실행 경우, 다음 체크리스트를 참조하여 mongodb-atlas-local 이미지로 변환하는 과정을 간소화할 수 있습니다.

  1. docker-compose.yaml 파일 에서 기존 command 을(를) 제거합니다. Docker Compose 정의의 commandmongodb-atlas-local 이미지에 정의된 ENTRYPOINT 을 재정의하므로 mongodb-atlas-local 이미지를 설계된 대로 실행 하려면 기존 command 를 모두 제거 해야 합니다.

  2. 이 기능 mongodb-atlas-local 이미지에 내장되어 있으므로 Atlas 배포서버 에 대한 상태 확인을 정의할 필요가 없습니다.

다음 예제에서는 Docker Compose YAML 파일 에 필요한 변경 사항을 보여줍니다.

services:
self_built_atlas_implementation:
image: mongo:8.0
ports:
- 27017:27017
command: ["./entrypoint.sh"] # You may have defined a health check for the database in the entrypoint script.
services:
local_dev_atlas:
image: mongodb/mongodb-atlas-local:8.0
hostname: local_dev_atlas
ports:
- 27017:27017
environment:
- MONGODB_INITDB_ROOT_USERNAME=user
- MONGODB_INITDB_ROOT_PASSWORD=pass
volumes:
- data:/data/db
- config:/data/configdb
volumes:
- data:
- config:

돌아가기

로컬 배포 만들기

이 페이지의 내용