Create a Docker GitHub action to autobuild on each commit. Update Dockerfile and docker-compose.yml to support.

This commit is contained in:
Tim Donohue
2021-12-07 16:51:54 -06:00
parent 0dba48be13
commit 86c2f389d5
4 changed files with 78 additions and 3 deletions

61
.github/workflows/docker.yml vendored Normal file
View File

@@ -0,0 +1,61 @@
# DSpace Docker image build for hub.docker.com
name: Docker images
# Run this Build for all pushes / PRs to current branch
on: [push, pull_request]
jobs:
docker:
runs-on: ubuntu-latest
env:
# Define tags to use for Docker images based on Git tags/branches
# For a new branch commit, tag Docker image with that branch name
# Except for 'main' branch, where we use the literal 'dspace-7_x' tag (see below).
# For a new tag, tag Docker image with that same tag
IMAGE_TAGS: |
type=ref,event=branch,enable=${{ github.ref != 'refs/heads/main' }}
type=raw,value=dspace-7_x,enable=${{ github.ref == 'refs/heads/main' }}
type=ref,event=tag
steps:
# https://github.com/actions/checkout
- name: Checkout codebase
uses: actions/checkout@v2
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v1
# https://github.com/docker/login-action
- name: Login to DockerHub
# Only login if not a PR, as PRs only trigger a Docker build and not a push
if: github.event_name != 'pull_request'
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
###############################################
# Build/Push the 'dspace/dspace-angular' image
###############################################
# https://github.com/docker/metadata-action
# Get Metadata for docker_build step below
- name: Sync metadata (tags, labels) from GitHub to Docker for 'dspace-angular' image
id: meta_build
uses: docker/metadata-action@v3
with:
images: dspace/dspace-angular
tags: ${{ env.IMAGE_TAGS }}
# https://github.com/docker/build-push-action
- name: Build and push 'dspace-angular' image
id: docker_build
uses: docker/build-push-action@v2
with:
context: .
file: ./Dockerfile
# For pull requests, we run the Docker build (to ensure no PR changes break the build),
# but we ONLY do an image push to DockerHub if it's NOT a PR
push: ${{ github.event_name != 'pull_request' }}
# Use tags / labels provided by 'docker/metadata-action' above
tags: ${{ steps.meta_build.outputs.tags }}
labels: ${{ steps.meta_build.outputs.labels }}

View File

@@ -1,7 +1,7 @@
# This image will be published as dspace/dspace-angular
# See https://dspace-labs.github.io/DSpace-Docker-Images/ for usage details
# See https://github.com/DSpace/dspace-angular/tree/main/docker for usage details
FROM node:12-alpine
FROM node:14-alpine
WORKDIR /app
ADD . /app/
EXPOSE 4000

View File

@@ -4,6 +4,20 @@
:warning: **NOT PRODUCTION READY** The below Docker Compose resources are not guaranteed "production ready" at this time. They have been built for development/testing only. Therefore, DSpace Docker images may not be fully secured or up-to-date. While you are welcome to base your own images on these DSpace images/resources, these should not be used "as is" in any production scenario.
***
## 'Dockerfile' in root directory
This Dockerfile is used to build a *development* DSpace 7 Angular UI image, published as 'dspace/dspace-angular'
```
docker build -t dspace/dspace-angular:dspace-7_x .
```
This image is built *automatically* after each commit is made to the `main` branch.
Admins to our DockerHub repo can manually publish with the following command.
```
docker push dspace/dspace-angular:dspace-7_x
```
## docker directory
- docker-compose.yml
- Starts DSpace Angular with Docker Compose from the current branch. This file assumes that a DSpace 7 REST instance will also be started in Docker.

View File

@@ -20,7 +20,7 @@ services:
DSPACE_NAMESPACE: /
DSPACE_PORT: '4000'
DSPACE_SSL: "false"
image: dspace/dspace-angular:latest
image: dspace/dspace-angular:dspace-7_x
build:
context: ..
dockerfile: Dockerfile