Building

The Envoy build system uses Bazel.

In order to ease initial building and for a quick start, we provide a recent Ubuntu-based docker container that has everything needed inside of it to build and statically link Envoy, see ci/README.md.

In order to build without using the Docker container, follow the instructions at bazel/README.md.

Linux/Mac Target Requirements

Envoy was initially developed and deployed on Ubuntu 14.04 LTS. It should work on any reasonably recent Linux including Ubuntu 20.04 LTS.

Building Envoy has the following requirements:

Please note that for Clang/LLVM 8 and lower, Envoy may need to be built with --define tcmalloc=gperftools as the new tcmalloc code is not guaranteed to compile with lower versions of Clang.

Windows Target Requirements

Note

On August 31, 2023 the Envoy project ended official Windows support due to a lack of resources. We will continue to accept patches related to the Windows build. Until further notice, Windows builds are excluded from Envoy CI, as well as the Envoy release and security processes.

Envoy supports Windows as a target platform. The requirements below only apply if you want to build the Windows native executable. If you want to build the Linux version of Envoy on Windows either with WSL or Linux containers please see the Linux requirements above.

Building Envoy for Windows has the following requirements:

Detailed instructions

Please see developer use of CI Docker images and building Envoy with Bazel documentation for more information on performing manual builds.

Modifying Envoy

If you’re interested in modifying Envoy and testing your changes, one approach is to use Docker. This guide will walk through the process of building your own Envoy binary, and putting the binary in an Ubuntu container.