构建 Envoy Docker 镜像

以下步骤将指导您构建自己的 Envoy 二进制文件,并将其放入干净的 Ubuntu 容器中。

提示

这些说明使用 ci/run_envoy_docker.sh 在 Docker 中运行命令。

默认情况下,这会将 bazel 运行文件和任何工件放置在 /tmp/envoy-docker-build 中。

您可以通过将 ENVOY_DOCKER_BUILD_DIR 环境变量设置为您选择的路径来覆盖此选项。

步骤 1:构建 Envoy

使用 envoyproxy/envoy-build,您将编译 Envoy。此镜像包含构建 Envoy 所需的所有软件。从您的 Envoy 目录

$ pwd
src/envoy
$ ./ci/run_envoy_docker.sh './ci/do_ci.sh release'

该命令将花费一些时间运行,因为它正在编译 Envoy 二进制文件并运行测试。

如果您的系统资源有限,或者您希望在不运行测试的情况下构建,也可以按以下方式构建

$ pwd
src/envoy
$ ./ci/run_envoy_docker.sh './ci/do_ci.sh release.server_only'

有关构建和不同构建目标的更多信息,请参阅 ci/README.md

警告

这些构建 Envoy 的说明使用 envoyproxy/envoy-build-ubuntu 镜像。您需要 4-5GB 的磁盘空间来容纳此镜像。

此脚本在您的主机系统上以有效 root 身份运行。

步骤 2:仅使用 Envoy 二进制文件构建镜像

在此步骤中,我们将构建 Envoy 部署镜像。

注意

docker CI 目标期望先前使用上述步骤之一构建了发布包。

为了在 Envoy 构建镜像内构建 Docker,我们需要设置环境变量 ENVOY_DOCKER_IN_DOCKER

$ pwd
src/envoy/
$ ENVOY_DOCKER_IN_DOCKER=1 ./ci/run_envoy_docker.sh './ci/do_ci.sh docker'

现在,您可以使用 Envoy 镜像通过更改相关 Dockerfile 中的 FROM 行来构建任何沙箱。

如果您有兴趣修改 Envoy 并测试您的更改,这将非常有用。