在本指南中,您将学习如何使用 Docker 下载和运行 Meilisearch、配置其行为以及管理 Meilisearch 数据。

Docker 是一种将应用程序打包到容器中的工具。Docker 容器能确保您的应用在不同环境中以相同方式运行。在开发环境中使用 Docker 时,我们建议遵循 Docker 官方文档安装 Docker Desktop

通过 Docker 下载 Meilisearch

Docker 容器以镜像形式分发。要使用 Meilisearch,请使用 docker pull 命令下载 Meilisearch 镜像:

docker pull getmeili/meilisearch:v1.15

Meilisearch 每次引擎发布时都会部署新的 Docker 镜像。每个镜像都标有对应的 Meilisearch 版本号(如上例中 : 符号后的文本所示)。您可以在 Docker Hub 上查看 完整的 Meilisearch Docker 镜像列表

latest 标签总是会下载最新的 Meilisearch 版本。Meilisearch 不建议使用此标签,因为如果不同机器在不同时间设置,可能会导致它们运行不同的镜像版本。

通过 Docker 运行 Meilisearch

完成上一步后,使用 docker run 命令启动 Meilisearch 镜像:

docker run -it --rm \
  -p 7700:7700 \
  -v $(pwd)/meili_data:/meili_data \
  getmeili/meilisearch:v1.15

配置 Meilisearch

Meilisearch 在启动时接受多种实例配置选项。您可以通过两种方式配置这些选项:环境变量和 CLI 参数。请注意,某些选项仅作为 CLI 参数提供——详情请参阅我们的配置参考文档

通过环境变量传递实例选项

要通过 Docker 传递环境变量,请在 docker run 命令中添加 -e 参数。以下示例使用主密钥启动 Meilisearch:

docker run -it --rm \
  -p 7700:7700 \
  -e MEILI_MASTER_KEY='MASTER_KEY'\
  -v $(pwd)/meili_data:/meili_data \
  getmeili/meilisearch:v1.15

通过 CLI 参数传递实例选项

如果希望通过 Docker 向 Meilisearch 传递命令行参数,必须在 docker run 命令末尾显式添加一行来启动 meilisearch 二进制文件:

docker run -it --rm \
  -p 7700:7700 \
  -v $(pwd)/meili_data:/meili_data \
  getmeili/meilisearch:v1.15 \
  meilisearch --master-key="MASTER_KEY"

数据管理

使用 Docker 时,工作目录是 /meili_data。这意味着数据库文件的位置是 /meili_data/data.ms

数据持久化

默认情况下,每次容器停止运行时,写入 Docker 容器的数据都会被删除。这些数据包括索引及其存储的文档。

要在重启后保留数据,请通过 -v 命令行选项指定专用卷:

docker run -it --rm \
  -p 7700:7700 \
  -v $(pwd)/meili_data:/meili_data \
  getmeili/meilisearch:v1.15

上述示例使用了主机上的 $(pwd)/meili_data 目录。根据操作系统不同,从主机挂载卷到容器可能会导致性能下降,因此仅建议在开发应用程序时使用。

生成转储文件并更新 Meilisearch

要导出转储文件,请按照我们的转储指南中描述的创建转储端点进行操作。任务完成后,您可以在通过 -v 参数挂载的卷中的 /meili_data/dumps 目录下找到转储文件。

要导入转储文件,请使用 Meilisearch 的 --import-dump 命令行选项并指定转储文件的路径。确保该路径指向 Docker 可访问的卷:

docker run -it --rm \
  -p 7700:7700 \
  -v $(pwd)/meili_data:/meili_data \
  getmeili/meilisearch:v1.15 \
  meilisearch --import-dump /meili_data/dumps/20200813-042312213.dump

请注意,导出和导入转储文件需要使用命令行参数。有关如何使用 CLI 选项和 Docker 运行 Meilisearch 的更多信息,请参阅本指南的相关章节。

如果您按照数据持久性章节的说明将数据存储在持久卷中,在导入转储文件前必须删除该卷中的 /meili_data/data.ms 目录。

使用转储文件可以在不同 Meilisearch 版本之间迁移数据。在我们的专门指南中阅读更多关于更新 Meilisearch 的信息。

快照功能

要使用 Docker 生成 Meilisearch 快照,请使用 --schedule-snapshot--snapshot-dir 参数启动 Meilisearch:

docker run -it --rm \
  -p 7700:7700 \
  -v $(pwd)/meili_data:/meili_data \
  getmeili/meilisearch:v1.15 \
  meilisearch --schedule-snapshot --snapshot-dir /meili_data/snapshots

--snapshot-dir 应指向 Meilisearch 的 Docker 工作目录 /meili_data 内的文件夹。生成后,快照将出现在配置的目录中。

要导入快照,请使用 --import-snapshot 选项启动 Meilisearch:

docker run -it --rm \
  -p 7700:7700 \
  -v $(pwd)/meili_data:/meili_data \
  getmeili/meilisearch:v1.15 \
  meilisearch --import-snapshot /meili_data/snapshots/data.ms.snapshot

快照可用于备份或在相同版本的 Meilisearch 实例间迁移数据。在我们的指南中了解更多关于快照的信息。