Documentation‎ > ‎Development‎ > ‎Building OctoMY‎ > ‎Release builds‎ > ‎

Docker build system

The docker build system is what builds the releases of the OctoMY™ software.

Docker provides a way to quickly set up different operating system in containers which can be thought of as light weight virtual machine images that can run applications inside them on top of your regular host operating system.

The docker build system is a bash script that is part of OctoMY™ that automates the construction of a series of Docker images and containers that are set up with the express purpose of building OctoMY™.

The docker build system will hence only run on platforms that support bash and docker. Debian and Ubuntu are the only officially recommended platform, but feel free to try other platforms. Pull requests that fix bugs on any platform is welcomed.

To use the docker build system, simply invoke the script (integration/docker/bash.sh) without any arguments to see a menu of available options.

Structure

Docker images are blueprints of an OS file-system that can be instantiated as docker containers. Docker containers are thus runnable instances of docker images.

Each docker image is formed deterministically from its associated Dockerfile which describes how it is to be constructed. One Dockerfile may depend on another so that a layered architecture can be used to separate concerns .

In the docker build system, a hierarchy of Dockerfiles arranged in layers is responsible for constructing the docker images and containers used for building OctoMY™ to different platforms.

One layer is responsible for building Qt from source with our exact parameters, while another layer is responsible for building OctoMY™ using that Qt version

Adaptions of the build process for one spesific OS is kept in its own Dockerfile while the common general steps are maintained in another to facilitate as much reuse as feasible and practical.

Dockerfiles can only reference files that reside in the same directory or in a sub-directory (no soft-links allowed). For this reason the Dockerfiles are arranged each in its own carefully named folder. The names reveal what the Dockerfile does.

  1. octomy_apt/Dockerfile - Install all build time dependencies for Qt5 using apt (this is only for debian derived Linux distributions such as Ubuntu)
  2. octomy_qt_src/Dockerfile - Clone Qt5 source from official git repo. May depend on several OS base images such as octomy_apt
  3. octomy_qt_conf/Dockerfile - Configure Qt5 build using the Qt5 configure tool. Depends on octomy_qt_src
  4. octomy_qt_build/Dockerfile - Build Qt5. Depends on octomy_qt_conf
  5. octomy_zoo/Dockerfile - Run zoo instance (NOTE: not related to build)
Comments