How to Build the SDAP Docker Images

In this guide, we will go over how to build the docker images for the various components of SDAP.

Prepare

First, we must ensure we have Docker installed and running. For this guide, we used Docker Desktop version 4.12.0. Download Docker Desktop here.

Now we must download and extract the source code for NEXUS and the ingester.

export NEXUS_DIR=~/sdap-build/nexus
export INGESTER_DIR=~/sdap-build/ingester

mkdir -p ${NEXUS_DIR}
mkdir -p ${INGESTER_DIR}

We should also set variables for a consistent tag across all images. These should be consistent with the release versions we plan to build.

export NEXUS_VERSION=1.1.0
export INGESTER_VERSION=1.1.0

To build the necessary images, we will need to first download the latest releases for SDAP NEXUS and SDAP Ingester ((URL)). We will not need to download the SDAP Nexusproto release directly.

Now we must extract the releases to their respective directories.

Create a temporary directory to extract to.

export TMP_DIR=/tmp/SDAP-extract
mkdir -p ${TMP_DIR}

Note

In the following code block, make sure the versions in the filenames correspond with the versions that were downloaded.

tar xvf apache-sdap-ingester-${INGESTER_VERSION}-incubating-src.tar.gz -C ${TMP_DIR}
tar xvf apache-sdap-nexus-${NEXUS_VERSION}-incubating-src.tar.gz -C ${TMP_DIR}

mv ${TMP_DIR}/Apache-SDAP/apache-sdap-ingester-${INGESTER_VERSION}-incubating-src/* ${INGESTER_DIR}
mv ${TMP_DIR}/Apache-SDAP/apache-sdap-nexus-${NEXUS_VERSION}-incubating-src/* ${NEXUS_DIR}

Set Default Docker Platform —

To ensure consistency when building/running on different hardware architectures, we should set this variable to ensure docker uses linux/amd64.

export DOCKER_DEFAULT_PLATFORM=linux/amd64

Build Ingester Components

There are two components to build: the Collection Manager & Granule Ingester.

For both of these, we must first move to the ingester root directory.

cd ${INGESTER_DIR}

Build the Collection Manager

From the ingester root directory, run:

docker build . -f collection_manager/docker/Dockerfile -t sdap-local/sdap-collection-manager:${INGESTER_VERSION}

Build the Granule Ingester

From the ingester root directory, run:

docker build . -f granule_ingester/docker/Dockerfile -t sdap-local/sdap-granule-ingester:${INGESTER_VERSION}

Build the Solr & Webapp Components

For the remaining three components, we must now move to the nexus root directory.

cd ${NEXUS_DIR}

Build the Solr Image

First we must move to the Solr Docker directory.

cd docker/solr

Now to build the image:

docker build . -t sdap-local/sdap-solr-cloud:${NEXUS_VERSION}

Build the Solr Initialization Image

Now to build the image:

docker build . -t sdap-local/sdap-solr-cloud-init:${NEXUS_VERSION} -f cloud-init/Dockerfile

Build the Webapp Image

For the final image, we must return to the NEXUS root directory.

cd ${NEXUS_DIR}

Now we can build the webapp with:

docker build . -f docker/nexus-webapp/Dockerfile -t sdap-local/sdap-nexus-webapp:${NEXUS_VERSION}

Verify Successful Build

To verify build success, follow the quickstart guide.

Finished!

Congratulations! You have successfully built the images required for running NEXUS.

If you used your own repository for the image tags, you can push them using docker push.