This image is used as a base for Horizon, Minion, and Sentinel Docker containers running in production. The goal is to provide a small cacheable image which satisfies the dependencies required from the core software.
It provides the following major dependencies:
- Official Ubuntu base image
- OpenJDK JRE (LTS releases)
- JICMP and JICMP6 libraries
- JMX Prometheus exporter
- confd
- Some tools from the official apt repository for troubleshooting
It can be built for multiple architectures with Docker and the buildx command.
You can build the deploy base image using make.
The build targets and arguments are described by running make help.
If you just run make the goal oci will be used for the linux/amd64 architecture.
The result is an OCI image file in artifacts/deploy-base-amd64.oci.
You can load the image with docker image load -i artifacts/deploy-base-amd64.oci.
By default the a the registry is set to localhost. If you want to publish the result to a registry you have to provide at minimum the following arguments:
CONTAINER_REGISTRYas the FQDN, e.g. docker.io or quay.ioCONTAINER_REGISTRY_LOGINas the user name for the registryCONTAINER_REGISTRY_PASSas the user name for the registryTAG_ORGas the organisation name in the registry, e.g.opennmsormy-orgVERSIONtag to identify this image build, e.g.1.0.0
make publish CONTAINER_REGISTRY="quay.io" CONTAINER_REGISTRY_LOGIN="my-login" CONTAINER_REGISTRY_PASS="my-pass" TAG_ORG="my-org" VERSION="1.0.0"
If you want to build a container image for a different architecture for example for ARM v7 you can set ARCHITECTURE="linux/arm/v7.
You can get a list of available build platforms available in your environment when you run make builder-instance.
In CircleCI releases are only published to DockerHub when changes are pushed to the master branch.
For the reason we sign the images you can only build images for a single architecture at a time. With docker buildx we need to sign and build the multiarchitecture manifest manually. We use the CircleCI matrix feature setting the architecture argument. So if you need images for ARM v7, ARM 64 and AMD 64, just run
make oci ARCHITECTURE=linux/arm/v7
make oci ARCHITECTURE=linux/arm64
make oci ARCHITECTURE=linux/amd64
The OCI file artifacts are prefixed with the architecture.