Versions Compared

Key

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

Proposal: Support Multiple JDK Versions

Prior Dockerfile Names

branchJDKtagDockerfile
master8master./Dockerfile
dspace-6_x8dspace-6_x./Dockerfile
dspace-5_x8dspace-5_x./Dockerfile
dspace-4_x8dspace-4_x./Dockerfile


New Dockerfile Names


branchJDKtagold tag nameDockerfileMavenANTTomcatNote
master8dspace-7_x-jdk8master/Dockerfile.jdk8maven:latest1.10.5tomcat:8
master8dspace-7_x-jdk8-test
/Dockerfile.jdk8-testmaven:latest1.10.5tomcat:8testing optimizations*
dspace-6_x8dspace-6_x-jdk8dspace-6_x/Dockerfile.jdk8
maven:latest1.10.5tomcat:8
dspace-6_x8dspace-6_x-jdk8-test
/Dockerfile.jdk8-testmaven:latest1.10.5tomcat:8testing optimizations*
dspace-5_x8dspace-5_x-jdk8dspace-5_x/Dockerfile.jdk8maven:latest1.10.5tomcat:8DSpace 5x/Tomcat8 not recommended for usage
dspace-5_x8dspace-5_x-jdk8-test
/Dockerfile.jdk8maven:latest1.10.5tomcat:8testing optimizations*
dspace-5_x7dspace-5_x-jdk7
/Dockerfile.jdk7maven:3.5.4-jdk-7
or maven:latest
1.9.13tomcat:7.0.90-jre7
dspace-5_x7dspace-5_x-jdk7-test
/Dockerfile.jdk7-testmaven:3.5.4-jdk-7
or maven:latest
1.9.13tomcat:7.0.90-jre7testing optimizations*
dspace-4_x7dspace-4_x-jdk7
/Dockerfile.jdk7maven:3.5.4-jdk-7
or maven:latest
1.9.13tomcat:7.0.90-jre7(The old tag dspace-4_x had been built with jdk8)
dspace-4_x7dspace-4_x-jdk7-test
/Dockerfile.jdk7-testmaven:3.5.4-jdk-7
or maven:latest
1.9.13tomcat:7.0.90-jre7(The old tag dspace-4_x had been built with jdk8)

Image Variants for Testing

Note: the following *testing optimizations will be added to image variants

  • Localhost restriction for SOLR will be removed
  • SSL requirement for the rest service will be removed

Implementation Notes

  • Can we place multiple Dockerfiles into separate directories?
    • When building from the command line, it is possible to build with a Dockerfile in a subdirectory.
    • Unfortunately, the automated build process on Docker Hub changes the context directory for the build and cannot find necessary resources if the Dockerfile does not live in the root directory.
    • Solution: create multiple Dockerfiles in the root directory with meaningful names.
  • We can create contextual README files for each release.  
    • Unless we move the Dockerfiles to a subdirectory, we cannot change the README that displays in Docker Hub.
    • Solution: I have added a note to the main DSpace README file (see the PR above)

Image Verification Script

Sample script output

Code Block
languagetext
titleDocker Image Verification Script
#!/bin/sh
# CD to docker-compose dir
export DOCKER_OWNER=dspace
export DOCKER_OWNER=terrywbrady
export DPROJ=test-image


function checkImage {

  removeVols
  export DSPACE_VER=$1
  docker-compose -p $DPROJ up -d
  echo " ===== ${DSPACE_VER} ===== "
  docker exec ${DPROJ}_dspace_1 //dspace/bin/dspace version | egrep "DSpace version:|JRE:"
  checkUrl foo
  checkUrl xmlui
  checkUrl oai/request
  checkUrl solr
  checkUrl rest
  echo " ===== ===== ===== "
  docker-compose -p $DPROJ down

}

function checkUrl {
  URL="http://localhost:8080/$1"
  echo "  ---> ${URL} "
  curl -s -I -L $URL | grep "^HTTP"
}

function removeVols {
  vols=`docker volume ls --format "{{.Labels}};{{.Name}}"|grep "com.docker.compose.project=${DPROJ}"|cut -d';' -f2`
  for vol in $vols
  do
    docker volume rm $vol
  done
}

checkImage dspace-7_x-jdk8
checkImage dspace-7_x-jdk8-test
checkImage dspace-6_x-jdk8
checkImage dspace-6_x-jdk8-test
checkImage dspace-5_x-jdk8
checkImage dspace-5_x-jdk8-test
checkImage dspace-5_x-jdk7
checkImage dspace-5_x-jdk7-test
checkImage dspace-4_x-jdk7
checkImage dspace-4_x-jdk7-test