Contribute to the DSpace Development Fund

The newly established DSpace Development Fund supports the development of new features prioritized by DSpace Governance. For a list of planned features see the fund wiki page.

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

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

Open Issues

Issue 1 - Move Dockerfile into DSpace/DSpace and DSpace/DSpace-Angular

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

Issue 2 - Assume the Dockerfile Context has a full instance of source code

Currently, our Docker images pull code from GitHub within the Dockerfile.

Current Docker Strategy
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.

Simplified Docker Strategy - assumes the file resides in the Code base
FROM maven as build
WORKDIR /app
# Add the full source dir into the image
ADD * /app/


# Some other strategy will be needed for inserting local.cfg and build.properties
COPY ??/local.cfg /app/
COPY ??/build.properties /app/

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

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

Issue 3 - 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?

Issue 4 - 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

  • Each time one of the supported branches of DSpace is updated, update an image to Docker Hub.
  • Each time a release tag is created on GitHub, create a new image on Docker Hub.
  • It is unclear if images could be generated for each PR
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

PRxxxx
This may not be possible to implement

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

  • Move the Dockerfile from DSpace-Labs/DSpace-Docker-Images to DSpace/DSpace.
    • Customize 4x branch to look for custom target/install dir.
  • Grant DockerHub access to the DSpace GitHub org.
  • Consider a paid DockerHub account to expedite builds.  Otherwise, builds might queue up.
    • You can only trigger one build at a time and no more than one every five minutes. If you already have a build pending, or if you recently submitted a build request, Docker ignores new requests.

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

  • Each time Travis rebuilds a branch, update an image to Docker Hub.
  • Each time Travis rebuilds a PR, update an image to Docker Hub
    • This may generate a lot of images, but it could simplify testing
  • Each time a release tag is created on GitHub, manually build a new image on Docker Hub.
    • Unless there is a way to trigger this in travis as well
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

  • Relocate the Dockerfile to source repo?
    • This may be needed
  • Create Docker Hub account for DSpace (user not org).  Embed Docker Hub user credentials within Travis.
  • Evaluate the performance impact on the Travis build
  • Determine any limitations on the number of images that can be pushed to Docker Hub

Issue 5 - 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 6 - Exploring new opportunities build 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.

Additional Resources

  • No labels