Files

Docker Infrastructure

Overview

This directory includes two sub-directories, develop and deploy.

The develop directory contains scripts to build a Docker image containing all of the UxAS prerequsite software, as well as scripts to then build UxAS and run the UxAS tests in a container.

The deploy directory contains scripts to build a Docker image that includes the uxas binary produced by the develop scripts, and the libraries required at run-time. That image can then be used to run UxAS in a directory mounted from the host computer.

Details

The Docker infrastructure for x86_64 uses Ubuntu 17.10 as a base image, and then installs development tools and libraries needed to build and test UxAS (the develop image). Another image installs only the shared libraries required by the resulting executable, in order to make a deployment as small as possible (the deploy image).

Ubuntu

Ubuntu is currently used as a base because it has historically been a supported platform for UxAS. However, this may change in the future to a distribution like Alpine Linux in order to reduce the size of deployment images.

Self-Contained

While the basic UxAS build system can use Meson wrap dependencies to satisfy most of its third party requirements, the develop image provides those dependencies in the usual system locations (e.g., /usr/lib and /usr/local/lib). This means that the develop image can build UxAS from start to finish without a network connection.

Owned By Root

The main rough edge with the Docker infrastructure is the need to use sudo to clean up after it.

The scripts in this directory often invoke Docker with a local disk mount option so that local development is reflected in the build container, and so that the build process does not have to start from a fresh Meson build directory for each Docker-based build.

Since the user within the Docker container is root by default, the files touched during the build therefore become owned by root, which is not what one expects to see in their build tree. You can run sudo chown -R youruser:yourgroup on your OpenUxAS directory, but we are working on better options.