blob: ae9c1b10b1684e48b9ca4497cefb605a811b88bd [file] [log] [blame] [view]
---
layout: doc
title: "Set up your environment - Docker"
---
We provide <a
href="https://github.com/youtube/cobalt/tree/main/docker/linux/">Docker image definitions</a> to simplify managing build environments.
The instructions below assume Docker is installed and is able to run basic
hello-world verification. `docker-compose` command is expected to be available as well.
## Set up your workstation
Clone the Cobalt code repository. The following `git` command creates a
`cobalt` directory that contains the repository:
```
$ git clone https://github.com/youtube/cobalt.git
$ cd cobalt
```
### Usage
The simplest usage is:
```
docker-compose run <platform>
```
By default, a `debug` build will be built, with `cobalt` as a target.
You can override this with an environment variable, e.g.
```
docker-compose run -e CONFIG=devel -e TARGET=nplb <platform>
```
where config is one of the four optimization levels, `debug`, `devel`,
`qa` and `gold`, and target is the build target passed to ninja
See <a
href="https://github.com/youtube/cobalt#building-and-running-the-code">Cobalt README</a> for full details.
Builds will be available in your `${COBALT_SRC}/out` directory.
<aside class="note">
Note that Docker runs processes as root user by default, hence
output files in `src/out/<platform>` directory have `root` as file owner.
</aside>
#### Windows Builds
We have a separate docker compose file for windows. Use the -f or --file flags
to specify a configuration file to use.
```
docker-compose -f docker-compose-windows.yml run win-win32
```
### Customization
To parametrize base operating system images used for the build, pass
`BASE_OS` as an argument to `docker-compose` as follows:
```
docker-compose build --build-arg BASE_OS="ubuntu:bionic" base
```
This parameter is defined in `docker/linux/base/Dockerfile` and is passed
to Docker `FROM ...` statement.
Available parameters for customizing container execution are:
**BASE_OS**: passed to `base` image at build time to select a Debian-based
base os image and version. Defaults to Debian 10. `ubuntu:bionic` and
`ubuntu:xenial` are other tested examples.
**PLATFORM**: Cobalt build platform, passed to GN
**CONFIG**: Cobalt build config, passed to GN. Defaults to `debug`
**TARGET**: Build target, passed to `ninja`
The `docker-compose.yml` contains the currently defined experimental build
configurations. Edit or add new `service` entries as needed, to build custom
configurations.
### Pre-built images
Note: Pre-built images from a public container registry are not yet available.
### Troubleshooting
To debug build issues, enter the shell of the corresponding build container
by launching the bash shell, i.e.
```
docker-compose run linux-x64x11 /bin/bash
```
and try to build Cobalt with the <a
href="https://github.com/youtube/cobalt#building-and-running-the-code">usual GN / ninja flow.</a>