NIH | National Cancer Institute | NCI Wiki  

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The purpose of this document is to document the current Docker setup at Mayo and how this setup can be duplicated at NCI and extended to provide additional testing, reporting and deploymentNCI which provides extended testing and reporting. 

In the future, we will set up LexEVS to be deployed via Docker containers.

Overview

The Mayo development team currently has Docker and Jenkins setup locally to build and test all of the LexEVS components.  It is our intent to move this setup to NCI for a more permanents permanent and stable location.  Additionally, we intend on working with the systems team to prototype deploying LexEVS in as Docker containers.

LexEVS System Test

The lexevs-system-test is a Docker script that builds and tests all of the LexEVS components.  Jenkins is used to kick off the Docker script.

Jenkins

Currently the lexevs-system-test is configured and running nightly at NCI.

When the Jenkins build is started, it simply calls a Docker script, passing in parameters that define the LexEVS component branches.

When the Docker script completes, the Jenkin build captures the test reports (XML) files.

Docker

The Docker script is where all of the work is done. 

...

  •  Builds MySQL containers
  • Clones LexEVS and LexEVS Remote projects from Git and builds each component
  • Creates a container for the URI Resolver
  • Builds and runs Junit tests for CTS2
  • Runs Junit tests against LexEVS
  • Loads terminologies into LexEVS
  • Creates a container for LexEVS Remote
  • Creates a container for CTS2
  • Runs Junit tests against LexEVS Remote
  • Stops and remove all containers.

NCI Docker Locations

There are several different repositories from which Docker images can be pulled from.  Below is the strategy that is followed for determining where to pull images from.

Docker Hub

When ever possible, we would like to move the current Jenkins/Docker setup from Mayo to NCI.

Additionally, we would like to create more standard containers based on NCI's technology stack and have the containers stored in Nexus for us to pull into our builds.  For example, we would like to create a container with  NCI approved technology. These containers may include the following:

  • CentOS 7
  • Tomcat 8.x
  • Java 8.x
  • MySQL 5.6.x

We have found in our testing that versions of the above components are regularly updated and at times, the version we specify in our script is no longer available which subsequently breaks our builds.  Having consistent, known versions (based on NCI's technology stack) that are available for our builds would provide greater stability.

Next Steps

Once we have the current setup running at NCI, we would like to start looking at the following items:

...

images will be pulled from the main Docker hub. This would include images for technology such as an OS, Tomcat, and MySQL.  This assumes that Docker hub has the correct version of the software that is approved by the NCI technology stack.

Docker Hub - LexEVS repository

When Docker hub doesn't have an image needed for our specific needs, we will build that image and push it out to our Docker hub public repository.   This repository is located here:

https://hub.docker.com/r/lexevs/lexevs/

NCI Nexus Docker Repository

If any of our images are specific and proprietary to NCI and their environment, the image will be built and pushed out to the internal NCI Nexus Docker Repository.  A possible instance for this may be that the CentOS 7 image has NCI specific security or other settings that are not appropriate for external users.  In this case the image would be stored internally on the NCI Nexus Docker repository.

Note:  If there is an image that is stored internally on the NCI Nexus Docker repository, it will only be available to users/builds internal to NCI's VPN.  We will need to fork our build scripts to pull "generic" images that are stored in the public LexEVS repository on Docker hub.  This will require dual maintenance.

Next Steps

Our next step is to work with the Systems team to develop LexEVS Docker container(s) that could be deployed to an NCI DEV Docker environment that could be used for testing

...

.

NCI Configuration

These are the links to the systems at NCI that have been set up for migrating our lexevs-system-test script to NCI.

...