Docs 菜单
Docs 主页
/ /
Atlas CLI
/ /

使用 Docker 创建本地 Atlas 部署

在此页面上

  • 使用 Docker 创建本地 Atlas 部署
  • 使用 Docker Compose 创建本地 Atlas 部署
  • 使用 Docker Compose 在运行中持久保存数据
  • 生成依赖项列表
  • 验证映像签名
  • 使用Github操作运行映像

本教程向您展示如何使用 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 部署。

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 自述文件。

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-localDocker Github操作运行 映像,请创建一个工作流程文件。要了解更多信息,请参阅Github Actions 快速入门。

示例:

.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'

后退

创建本地部署