NIH | National Cancer Institute | NCI Wiki  

Contents of this Page

The purpose of this document is to document the current Docker setup at NCI 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 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. 

The Git Docker project is located here:

Below is a high level view of what the script does.

  •  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, 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.

Jenkins - Jenkins server to run the lexevs-system-test.

Nexus - Nexus server to push specific versions of NCI technology stack software to.  This will be used by the Docker script to pull versions of software that are approved by NCI.

Docker interface: ncidockerhub.nci.nih.gov

Pull standard images from hub.docker and push to NCI Nexus server

Need to log into NCI Docker hub first

MySQL 5.6.33

Pull from docker hub

  • docker pull mysql:5.6.33

Tag the mysql container

Push to NCI Nexus


Tomcat 8.0.43-jre8
Pull from docker hub

  • docker pull tomcat:8.0.43-jre8

Tag the tomcat container

Push to NCI Nexus

 

  • No labels