与我们一起于10月8日至10日在纽约市学习最新的GraphQL联盟和API平台工程的技巧、趋势和新闻。参加纽约市的GraphQL峰会2024
文档
免费开始

在 Docker 中运行

在 Docker 中运行路由容器镜像


本指南提供了以下运行示例:在 Docker 中的容器镜像:

  • 使用默认配置运行基本示例。
  • 自定义配置以覆盖默认配置。
  • 调试您的容器化
  • 为您的 router 手动指定
  • 构建您自己的 router Docker 镜像。

有关文档的信息。docker run命令是本指南中示例的有用参考。

要使用的确切镜像版本取决于您希望使用哪个版本。在以下示例中,将<image version>替换为您选择的版本,例如v1.32.0

注意

Apollo 路由核心的源代码及其所有发布版本都在弹性许可 v2.0 (ELv2) 许可下提供

在 Docker 中运行路由器的基本示例

要运行 router ,您的 Docker 容器必须设置APOLLO_GRAPH_REFAPOLLO_KEY环境变量,分别设置为您的和 API 密钥。

以下是一个在 Docker 中运行 router 镜像的基本示例。确保将<router-image-version>替换为您想要使用的版本,例如v1.32.0

Docker
docker run -p 4000:4000 \
--env APOLLO_GRAPH_REF="<your-graph-ref>" \
--env APOLLO_KEY="<your-graph-api-key>" \
--rm \
ghcr.io/apollographql/router:<router-image-version>

此命令从Apollo下载您的,并使用默认配置,该配置在端口4000上监听连接。

对于更复杂的配置,例如覆盖 URL或传播标题,请参阅路由器配置

覆盖配置

Apollo默认的Docker镜像包含一个基本路由器配置。在容器内部,此文件位于/dist/config/router.yaml

如果您想覆盖默认配置,保留默认配置的某些方面是很重要的。特别是,路由器绑定和监听特殊地址0.0.0.0(适用于所有接口)通常很重要,以确保它在外部可访问的网络接口上暴露。没有此配置,路由器将只监听localhost

您可以从主机环境提供自己的配置到路由器,方法是将您的配置挂载到/dist/config/router.yaml,如下所示:

docker run -p 4000:4000 \
--env APOLLO_GRAPH_REF="<your-graph-ref>" \
--env APOLLO_KEY="<your-graph-api-key>" \
--mount "type=bind,source=/home/user/router.yaml,target=/dist/config/router.yaml" \
--rm \
ghcr.io/apollographql/router:<router-image-version>

注意

本地和容器路径都必须指定为绝对路径。

在此示例中,我们将从主机系统(/home/user/router.yaml)安装文件,以替代映像中提供的默认配置文件 /dist/config/router.yaml

向路由器二进制文件传递命令行参数

默认情况下,在发布的容器中运行的 router 命令没有设置任何可用的命令行选项。要设置这些选项,请将所需的选项附加到 docker run 命令。

例如,要使用 --log debug 选项启动 router,请使用以下带有附加选项的 docker run 命令:

docker run -p 4000:4000 \
--env APOLLO_GRAPH_REF="<your-graph-ref>" \
--env APOLLO_KEY="<your-graph-api-key>" \
--rm \
ghcr.io/apollographql/router:<router-image-version> --log debug

调试您的容器

您可以设置 entrypoint 来调试容器。

docker run -p 4000:4000 \
--env APOLLO_GRAPH_REF="<your graph>" \
--env APOLLO_KEY="<your key>" \
--mount "type=bind,source=/router.yaml,target=/dist/config/router.yaml" \
--rm \
--interactive \
--tty \
--entrypoint=bash \
ghcr.io/apollographql/router:<image version>
dist# pwd
/dist
dist# ls
config router schema
dist# exit
exit

在此示例中,我们添加了交互和 tty 标志,并将映像的入口点更改为了 bash shell。

运行调试容器以调查内存问题

docker run -p 4000:4000 \
--env APOLLO_GRAPH_REF="<your graph>" \
--env APOLLO_KEY="<your key>" \
--mount "type=bind,source=/data,target=/dist/data"
--rm \
ghcr.io/apollographql/router:<image version>-debug

router heaptrack 的控制下运行。heaptrack 输出保存在 /data 目录中。可以使用 heaptrack_guiheaptrack_print 直接分析输出来,也可以与 Apollo 支持共享。

指定超图

如果您不想通过 Apollo Uplink 自动更新您的超图,或者您无法从您的环境中访问 Apollo Uplink,您可以在 docker run 命令中手动指定您的超图详情:

docker run -p 4000:4000 \
--mount "type=bind,source=/docker.graphql,target=/dist/schema/local.graphql" \
--rm \
ghcr.io/apollographql/router:<image version> -c config/router.yaml -s schema/local.graphql

在此示例中,我们必须将本地定义的超图安装到我们的映像中,并指定文件位置。它不需要安装在 /dist/schema 目录中,但这是一个合理的安装位置。我们必须指定配置文件的位置,因为覆盖默认参数将覆盖我们的默认配置文件位置。在这种情况下,由于我们不希望更改我们的 router 配置,但想要确保它被使用,我们只需指定默认配置的默认位置。

构建您自己的容器

注意

本部分针对熟悉工具(如 dockergit)的开发商,他们想制作自己的 DIY 容器镜像。这里记录的脚本并非 router 产品的一部分,而是制作您自己的镜像的示例。

dockerfiles/diy 目录下,我们提供了一个脚本 build_docker_image.sh,说明了如何从我们的发布压缩包、git提交哈希或标签构建自己的docker镜像。以下是使用方法:

% ./build_docker_image.sh -h
Usage: build_docker_image.sh [-b [-r <repo>]] [-d] [<release>]
-b build docker image from the default repo, if not present build from a released version
-d build debug image, router will run under control of heaptrack
-r build docker image from a specified repo, only valid with -b flag
<release> a valid release. If [-b] is specified, this is optional
Example 1: Building HEAD from the repo
build_docker_image.sh -b
Example 2: Building HEAD from a different repo
build_docker_image.sh -b -r /Users/anon/dev/router
Example 3: Building tag from the repo
build_docker_image.sh -b v0.9.1
Example 4: Building commit hash from the repo
build_docker_image.sh -b 7f7d223f42af34fad35b898d976bc07d0f5440c5
Example 5: Building tag v0.9.1 from the released version
build_docker_image.sh v0.9.1
Example 6: Building a debug image with tag v0.9.1 from the released version
build_docker_image.sh -d v0.9.1

示例使用 debian:bullseye-slim 镜像 进行最终镜像构建。您可以根据自己的需求修改脚本以使用更适合您的镜像,但请注意,在使用 -d 标志时需谨慎,因为它假设存在可安装的 heaptrack 软件包。

上一页
在Kubernetes上部署
下一页
健康检查
评价文章评价在GitHub上编辑编辑论坛Discord

©2024Apollo Graph Inc.,即Apollo GraphQL。

隐私政策

公司