Devcontainer
Overview
Devcontainer is a recommended way to setup development environment for this project. It is a Docker container with all the required tools and dependencies.
With a seamless integration with VSCode, it provides a consistent development environment for all developers.
For CLion users there is an alternative approach described in CLion development environment.
Prerequisites
- Docker
- VSCode or any other IDE/workspace that supports Devcontainer
- Remote - Containers extension for VSCode
Getting Started with VSCode
- Open repository in VSCode.
- Reopen in Container. (VSCode should ask for it automatically, but if not, you can do it manually)
- Click on the green icon in the bottom left corner of the VSCode window.
- Select
Reopen in Container
. - Wait for the container to build.
- VSCode will reopen in the container.
- Enjoy your development environment.
Getting Started with
Detailed
Devcontainer comes up with some containers configured with Docker Compose:
workspace
- main container with all the tools and dependencies and mounted workspacexserver
- container with X server and VNC server for GUI applicationsgroot
- container with groot, a GUI for BehaviourTree.CPP. It does not start by default. See GRoot for more details.
All containers share the same X server socket, so GUI applications can be run from the workspace
container and displayed in the xserver
container. VNC server in xserver
runs a web server on port 12345
with a VNC client. You can access it by opening http://localhost:12345
in your browser.
Default environment variables loaded in the image
#!/usr/bin/env bash
override_env_file=/opt/ws/.devcontainer/override/.env
# Values below are defaults. You can override them by creating a file in .devcontainer/override/.env
# File will be sourced here.
if [ -f "$override_env_file" ]; then
echo "Sourcing override environment file: $override_env_file"
source "$override_env_file"
else
echo "No override environment file found at: $override_env_file"
echo "Using default values."
source /opt/ws/.devcontainer/default.env
fi
echo "Map file is expected in $OM_MAP_PATH - $OM_DATUM_LAT, $OM_DATUM_LONG"
For more details about the environment variables, see Configuration.