Resources

Docker Image Source and Tutorial

https://dspace-labs.github.io/DSpace-Docker-Images/

This repository contains an issue list of enhancement ideas.

Published Docker Images

https://hub.docker.com/u/dspace/

Technical Support and Project Communication 

#dspace-docker Slack Channel

DSpace Developer Show and Tell Meeting

Dev Show and Tell - Aug 28, 2018 - 1500UTC - DSpace On DockerHub

Open Issues

Issue 1 - Move Dockerfile into DSpace/DSpace and DSpace/DSpace-Angular & Assume the Dockerfile Context has a full instance of source code

This will reduce the need to retrieve source code from git, if the Dockerfile is already housed at the project root directory.

Pull requests

FROM alpine/git as clone ARG DSPACE_BRANCH=dspace-6_x ENV DSPACE_GIT https://github.com/DSpace/DSpace.git WORKDIR /app RUN git clone ${DSPACE_GIT} \ && cd /app/DSpace \ && git checkout ${DSPACE_BRANCH} COPY local.cfg /app/DSpace COPY build.properties /app/DSpace FROM maven as build WORKDIR /app COPY --from=clone /app/DSpace /app RUN mvn package

The Docker build command takes a git url as a parameter.  See https://docs.docker.com/engine/reference/commandline/build/

Some experimentation is still needed to verify this.

FROM maven as build WORKDIR /app # Add the full source dir into the image ADD * /app/ COPY docker.local.cfg /app/local.cfg # In the DSpace 4/5 build COPY docker.build.properties /app/build.properties

This will likely require the creation of a .dockerignore file for times when the build is run from a user's desktop

.git/ .idea/ .settings/ */target/ dspace/modules/*/target/

Issue 2 - Grant Docker Hub permissions within the DSpace GitHub organization

Terry has attempted to find another library tech open source project that has granted similar permissions.

Tim Donohue , do you know if one of the other DuraSpace projects has done this?

In the meantime, I am testing the automated build process here: https://hub.docker.com/r/terrywbrady/dspace/builds/ using a GitHub account with limited credentials.

Issue 3 - Docker Image Build Automation

Automate the creation of DSpace images as the DSpace/DSpace and DSpace/DSpace-Anuglar source code changes.

Option 1 - Create an Automated Build Trigger on Docker Hub

DockerHub allows you to configure builds based on source branches for a repository.

This is a supported solution.

Description


RepoBranch/tagImage NameNote
DSpacedspace-4_xdspace/dspace:dspace-4_xUpdated on each merge

dspace-5_xdspace/dspace:dspace-5_xUpdated on each merge

dspace-6_xdspace/dspace:dspace-6_xUpdated on each merge

masterdspace/dspace:masterUpdated on each merge

PRxxxxcontributor/dspace:branchThe contributor would need to set up automated build off their branch

dspace-6.ndspace/dspace:dspace-6.nTriggered on the creation of a new tag

dspace-5.ndspace/dspace:dspace-5.nTriggered on the creation of a new tag

dspace-6.ndspace/dspace:dspace-4.nTriggered on the creation of a new tag
DSpace-Angularmasterdspace/dspace-angular:masterUpdated on each merge

Requirements

The following terminal output illustrates how easy it is to switch between DSpace versions

Option 1a - Use DockerCloud for the Automated Build

There may be a PR build option available through this service, but I am finding it difficult to understand when to use Docker Cloud vs Docker Hub.

https://docs.docker.com/docker-cloud/builds/automated-build/#customize-your-build-process

Option 2 - Add Docker Build Automation to Travis Build

This would likely be a home-grown solution and may not be fully supported.

https://ops.tips/blog/travis-ci-push-docker-image/


Description

RepoBranch/tagImage NameNote
DSpacedspace-4_xdspace/dspace:dspace-4_xUpdated on each successful Travis build

dspace-5_xdspace/dspace:dspace-5_x

Updated on each successful Travis build


dspace-6_xdspace/dspace:dspace-6_x

Updated on each successful Travis build


masterdspace/dspace:master

Updated on each successful Travis build


PRxxxxdspace/dspace:pr-xxxx

Updated on each successful Travis build


dspace-6.ndspace/dspace:dspace-6.nManually created?

dspace-5.ndspace/dspace:dspace-5.nManually created?

dspace-6.ndspace/dspace:dspace-4.nManually created?
DSpace-Angularmasterdspace/dspace-angular:masterUpdated on each merge

Requirements

Issue 4 - Setting guidelines for team permissions on Docker Hub.

Currently, 4 users have admin rights to the DSpace Docker registry.

Consider granting image-specific permissions to particular teams.

Issue 5 - Exploring new opportunities built on DSpace images

The existence of published DSpace images might make it easier to host branch-specific DSpace images to facilitate PR testing and pre-release testing.

Currently, server level command line access is required to build and deploy a PR for testing.  This often limits the potential pool of testers to the developer community. 

If the deployment of a test environment for a PR could be automated, some user testing of PR's could be performed by repository managers and other users who do not have command line access t server resources.

Issue 6 - How should we be using Docker Labels within our Images

If we create more robust labels, how would we make use of them?

Additional Resources