本教程向您展示如何使用 Docker 创建本地 Atlas 部署。本教程使用 Docker 部署单节点副本集。有关完整详细的 Docker Compose 示例,请参阅Docker Compose 示例。
开始之前
必需:
Docker 已安装并在本地计算机上运行。
对于 macOS 或 Windows,请安装 Docker 桌面 v4.31 或更高版本。
对于 Linux,请安装 Docker 引擎 v27.0 或更高版本。
您的计算机至少有 2 GB 的可用 RAM 和 2 个 CPU 核心。
您计划使用的端口(默认:27017)在
localhost上可用。
推荐:
Install mongosh version 2.0 or later to connect to and interact with the deployment.
对于 Docker Compose 工作流,请安装 Docker Compose v1.27 或更高版本。
无需要虚拟专用云 (VPC)、防火墙或代理配置。部署在局部网络上运行。
使用 Docker 创建本地 Atlas 部署
安装并启动 Docker。
要学习;了解更多信息,请参阅Docker文档。
运行 Docker 映像。
示例:
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。
The following example demonstrates deploying an Atlas image in Docker and polling Docker to check the state of the container. Once the container is in a healthy state, the script automates a connection to your Atlas instance with Mongosh.
创建一个名为
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" 运行以下命令以使文件可执行。
chmod +x mongodb-atlas-local.sh 运行可执行文件。
./mongodb-atlas-local.sh
连接到本地 Atlas 部署。
要从主机(而不是容器)连接到本地Atlas部署,请将以下命令复制并粘贴到新终端中,并将 {connection_string} 变量替换为您的连接string 。
注意
The following example uses mongosh, but you can use the connection method that you prefer.
mongosh {connection_string}
例子:
mongosh "mongodb://localhost:27017/?directConnection=true"
mongosh "mongodb://user:pass@localhost:27017/?directConnection=true"
使用 Docker Compose 创建本地 Atlas 部署
使用Docker Compose创建本地Atlas部署。有关完整详细的示例,请参阅Docker Compose 示例。
注意
如果您现有使用官方MongoDB Docker映像构建的基于 Docker-Compose 的Atlas实施,并且您希望将其转换为使用Atlas本地开发者映像,请参阅下面的转换为本地开发者实施。
安装并启动 Docker。
要学习;了解更多信息,请参阅Docker文档。
创建 docker-compose.yaml 文件。
在运行 Docker Compose 的同一目录中创建 docker-compose.yaml文件。有关完整详细的示例,请参阅Docker Compose 示例。
示例:
1 services: 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
连接到本地 Atlas 部署。
要从主机(而不是容器)连接到本地Atlas部署,请将以下命令复制并粘贴到新终端中,并将 {connection_string} 变量替换为您的连接string 。
注意
The following example uses mongosh, but you can use the connection method that you prefer.
mongosh {connection_string}
示例:
mongosh "mongodb://user:pass@localhost:27018/?directConnection=true"
使用 Docker Compose 在运行中持久保存数据
您可以使用Docker Compose在多次运行中持久保存数据。持久化数据有助于确保数据在运行之间不会丢失。数据在Docker Compose 运行期间保持可用。
安装并启动 Docker。
要学习;了解更多信息,请参阅Docker文档。
创建 docker-compose.yaml 文件。
更新docker-compose.yaml文件以将必要的数据目录挂载为卷。
示例:
1 services: 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 13 volumes: 14 data: 15 config:
连接到本地 Atlas 部署。
要从主机(而不是容器)连接到本地Atlas部署,请将以下命令复制并粘贴到新终端中,并将 {connection_string} 变量替换为您的连接string 。
注意
The following example uses mongosh, but you can use the connection method that you prefer.
mongosh {connection_string}
示例:
mongosh "mongodb://user:pass@localhost:27019/?directConnection=true"
生成依赖项列表
您可以为mongodb/mongodb-atlas-local Docker 映像生成依赖项列表。
验证映像签名
您可以验证mongodb/mongodb-atlas-local Docker 映像的签名。
使用Github操作运行映像
要使用Github操作运行mongodb/mongodb-atlas-local Docker映像,请创建一个工作流程文件。 要学习;了解更多信息,请参阅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'
将官方映像转换为本地Atlas部署
如果您有在 Docker Compose 中运行的现有 Atlas 实施,并且该实施是使用官方 Mongo Docker 映像构建的,则可以参考以下清单,以简化将其转换为 mongodb-atlas-local 映像的过程。
从
docker-compose.yaml文件中删除任何现有的command。 由于Docker Compose 定义中的command会覆盖mongodb-atlas-local映像中定义的ENTRYPOINT,因此您必须删除任何现有的command,mongodb-atlas-local映像才能按设计运行。无需为Atlas部署定义运行状况检查,因为此功能内置于
mongodb-atlas-local映像中。
Docker Compose 更新示例
以下示例说明了可能需要对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:
验证部署
启动容器后,确认部署正在运行并且可以连接。
检查点 | 验证步骤 |
|---|---|
图像已拉取 | 运行 |
容器运行中 | 运行 |
容器状态正常 | 运行 |
连接成功 | Connect with |
数据卷存存在 (可选) | 运行 |
后续步骤
使用 Docker 创建并验证本地 Atlas 部署后,您可以:
连接应用程序:在应用程序配置中使用连接字符串。
Configure data persistence: Map Docker volumes to retain data across container restarts. See Create a Local Atlas Deployment with Docker for details.
使用 Docker Compose 工作流:对于多服务应用程序,将部署集成到
docker-compose.yaml文件中。有关完整示例,请参阅 Docker Compose 示例。使用 |fts|:在本地部署中创建和测试搜索索引。有关详细步骤,请参阅创建 MongoDB Search 索引并运行查询。
请使用 Atlas CLI:对于 CLI 托管的本地部署,请参阅 创建本地 Atlas 部署。