将 Meilisearch 与 Docker 结合使用

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

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

    使用 Docker 下载 Meilisearch

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

    docker pull getmeili/meilisearch:v1.12
    

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

    配置 Meilisearch

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

    使用环境变量传递实例选项

    要将环境变量传递给 Docker,请将 -e 参数添加到 docker run。下面的示例使用主密钥启动 Meilisearch

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

    使用 CLI 参数传递实例选项

    如果您想使用 Docker 将命令行参数传递给 Meilisearch,您必须在 docker run 命令的末尾添加一行,明确启动 meilisearch 二进制文件

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

    管理数据

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

    数据持久性

    默认情况下,写入 Docker 容器的数据会在容器停止运行时被删除。此数据包括您的索引和它们存储的文档。

    要在重启之间保持数据完整,请通过使用 -v 命令行选项运行 Docker 来指定专用卷

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

    上面的示例使用 $(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.12 \
      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.12 \
      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.12 \
      meilisearch --import-snapshot /meili_data/snapshots/data.ms.snapshot
    

    使用快照进行备份或在两个相同版本的 Meilisearch 实例之间迁移数据。 请阅读我们的指南,详细了解有关快照的更多信息。