Running the engine in a Docker container

For local development and testing, you can run the engine in a Docker container.

The steps are:

  1. Bundle the engine and its dependencies.

  2. Build a Docker image.

  3. Create a Docker container.

About Docker

To get a high-level overview of Docker, please read Understand the architecture. Optional reading includes reference guides for docker run and Dockerfile.


For Googlers running Goobuntu wanting to install Docker, see go/installdocker. For other contributors using Ubuntu, see official Docker installation instructions.

Bundle Engine

The blimp/engine:blimp_engine_bundle build target will bundle the engine and its dependencies into a tarfile, which can be used to build a Docker image. This target is always built as part of the top-level blimp/blimp meta-target.

Update Engine Dependencies

blimp/engine/engine-manifest.txt is a list of the engine's runtime dependencies. From time to time, this list may need to be updated. Use blimp/tools/ to (re)generate the manifest:

./blimp/tools/ \
    --build-dir out-linux/Debug \
    --target //blimp/engine:blimp_engine \
    --output blimp/engine/engine-manifest.txt

Be sure to review the generated manifest and remove any false runtime dependencies.

Build Docker Image

Using the tarfile you can create a Docker image:

docker build -t blimp_engine - < ./out-linux/Debug/blimp_engine_bundle.tar

Create Docker Container

From the Docker image you can create a Docker container (i.e. run the engine):

docker run blimp_engine

You can also pass additional flags:

docker run blimp_engine --with-my-flags

See the blimp engine Dockerfile to find out what flags are passed by default.

Mapping Volumes into the Docker Container

If you need to map a directory into the Docker container (eg. for necessary files):

docker run -v /path/to/srcdir:/path/to/docker/destdir blimp_engine

NB: The permissions of the directory and the files outside of the Docker container will be carried over into the container.