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

Docker Compose 示例

这个完整的Docker Compose示例设置了一个包含持久数据的本地 MongoDB Atlas 群集。查看完整的Docker Compose文件和每个组件,以了解其用途和配置。要学习;了解更多信息,请参阅 使用Docker创建本地Atlas部署。

以下示例使用 mongodb/mongodb-atlas-local 映像创建本地Atlas 集群。该文件配置网络,安装正确的数据卷以播种数据库和持久化数据,以及Atlas Search索引。

1services:
2 mongodb:
3 image: mongodb/mongodb-atlas-local
4 hostname: mongodb
5 environment:
6 - MONGODB_INITDB_ROOT_USERNAME=user
7 - MONGODB_INITDB_ROOT_PASSWORD=pass
8 ports:
9 - 27017:27017
10 volumes:
11 - ./init:/docker-entrypoint-initdb.d
12 - db:/data/db
13 - configdb:/data/configdb
14 - mongot:/data/mongot
15volumes:
16 db:
17 configdb:
18 mongot:

使用以下信息为本地Atlas 集群预配您自己的数据,并保留您的配置和数据。

Docker Compose文件具有以下主要参数:

  • services 定义要运行的容器。在此示例中,由名为 mongodb 的单个服务定义了MongoDB服务。您可能还需要其他服务才能运行完整的应用程序。

  • volumes 定义了可以在容器之间股票的持久存储位置。此示例显示了MongoDB服务运行所需的持久存储位置。

image: mongodb/mongodb-atlas-local

必需

此参数定义本地MongoDB Atlas映像。此定义使用最新版本的映像,相当于使用 :latest标签。如果您的组织要求您使用特定的映像构建,您可以附加@sha256:<digest> 。如果要使用具有最新操作系统更新的特定版本的MongoDB ,请使用版本号标签。示例,mongodb/mongodb-atlas-local:8.0.6

hostname: mongodb

必需

此参数定义容器的主机名。必须正确指定此项,本地副本集才能正常运行。需要此参数以确保同一Docker容器网络中的不同服务之间的通信。您可以通过相同的主机名 mongodb 引用此容器。

environment:
- MONGODB_INITDB_ROOT_USERNAME=user
- MONGODB_INITDB_ROOT_PASSWORD=pass

推荐

突出显示的 environment 参数为本地Atlas 集群设立初始 root用户名和密码。为简单起见,在本示例中,凭证是在Docker Compose文件本身中定义的,但您可以将凭证抽象到环境变量中。

environment:
- MONGODB_INITDB_ROOT_USERNAME=user
- MONGODB_INITDB_ROOT_PASSWORD=pass
- MONGOT_LOG_FILE=/dev/stderr
- RUNNER_LOG_FILE=/dev/stderr

Optional

突出显示的 environment 参数定义日志记录以帮助诊断任何问题。 mongot(提供Atlas Search功能)生成 MONGOT_LOG_FILE。此示例将 mongot 日志输出到 stderr目录。运行器服务会生成 RUNNER_LOG_FILE。运行器服务监控创建 mongod 的进程并配置与 mongot 的集成。此示例将运行程序日志输出到 stderr目录。

跨容器重启的卷可持久保存数据和配置。

volumes:
- ./init:/docker-entrypoint-initdb.d

可选的

突出显示的 volumes 参数将本地 init目录挂载到容器的初始化目录。通常,init目录位于项目中,当您运行docker-compose up 时,该进程会在此目录中搜索所有初始化脚本。支持的文件类型包括:

  • .js MongoDB Shell脚本

  • .sh Bash 脚本

示例,将以下脚本放入 init 文件夹时:

  1. 该脚本检索示例示例数据集。

  2. 确认下载的数据集。

  3. mongorestore使用本地MongoDB Atlas容器映像提供的 将存档恢复到新的本地Atlas 集群。

  4. 确认已加载的数据。

# init/init.sh
#!/bin/bash
curl -O https://atlas-education.s3.amazonaws.com/sampledata.archive
echo "Sample data downloaded."
mongorestore --uri "$CONNECTION_STRING" --archive=./sampledata.archive
echo "Sample data loaded successfully."

注意

连接字符串

由于在种子进程中构建连接字符串可能具有挑战性,尤其是在本地计算机和Docker网络之间切换时,因此在种子进程中会自动提供 $CONNECTION_STRING 环境变量。

volumes:
- ./init:/docker-entrypoint-initdb.d
- db:/data/db
- configdb:/data/configdb
- mongot:/data/mongot
volumes:
db:
configdb:
mongot:

可选的

MongoDB默认将其数据存储在 /data/db目录中。在此Docker Compose文件中,/data/db目录会映射到MongoDB服务的 db 卷。 Docker Compose文件末尾的 volumes 参数声明其他服务可以使用的卷,包括 mongodb 服务中映射的 db 卷。 db 卷充当容器外部的存储位置,在容器重启时保留数据。

volumes:
- ./init:/docker-entrypoint-initdb.d
- db:/data/db
- configdb:/data/configdb
- mongot:/data/mongot
volumes:
db:
configdb:
mongot:

可选的

默认下, MongoDB将其配置数据存储在 /data/configdb目录中,该目录以与存储的数据相同的方式持久化。

volumes:
- ./init:/docker-entrypoint-initdb.d
- db:/data/db
- configdb:/data/configdb
- mongot:/data/mongot
volumes:
db:
configdb:
mongot:

可选的

本地MongoDB Atlas映像 ()mongodb/mongodb-atlas-local 附带mongot ,它提供Atlas Search和Atlas Vector Search功能。默认下,mongot 将索引存储在/data/mongot 目录中。该卷被映射、挂载,其数据在运行中持续存在,其方式与配置和存储的数据相同。

本地Atlas实施简化了MongoDB进程()mongod 和搜索功能 ()mongot) 的配置。在初始化期间,这些进程必须启动并重新启动。在某些情况下,容器可能正在运行,但您需要的进程尚未准备就绪本地MongoDB Atlas映像还提供运行状况检查。

您可以使用运行状况检查来确保MongoDB和搜索功能进程以及任何初始化脚本均已完全准备就绪。

在脚本中,包含以下代码:

timeout 120 bash -c 'until [ "$(docker inspect --format='\''{{.State.Health.Status}}'\''<container-name>)" = "healthy" ]; do sleep 2; done'

使用Docker Compose 时还可以执行运行状况检查。

要启动该服务,运行以下命令:

docker-compose up

您可以附加 -d 以在分离模式下运行该服务。

要停止该服务,运行以下命令:

docker-compose down

您可以附加 -v 来删除卷并清除数据。如果您不想保留数据或配置更改,或者想确保从全新容器中重新启动,请使用此选项。

要验证运行docker-compose up 时服务是否正常,请添加 condition: service_healthy 参数:

api:
depends_on:
atlas_local:
condition: service_healthy

要学习;了解更多信息,请参阅使用Docker创建本地Atlas部署。

要讨论本地Atlas集群,请参阅MongoDB开发者社区论坛。要获取帮助、提供反馈或请求功能,请参阅MongoDB反馈引擎。

后退

使用 Docker 部署

在此页面上