From 1976cba5aa652659875e9fd2d314e66d7a8fe7b3 Mon Sep 17 00:00:00 2001 From: Andrew Nicols Date: Mon, 21 Jan 2019 12:07:45 +0800 Subject: [PATCH] MOBILE-2837 Docker: Add a Dockerfile for easier testing and CI --- .dockerignore | 2 ++ Dockerfile | 27 +++++++++++++++++++++++++++ hooks/post_push | 18 ++++++++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 hooks/post_push diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..210c47a90 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +node_modules +Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..d884d988f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,27 @@ +# This image is based on the fat node 11 image. +# We require fat images as neither alpine, or slim, include git binaries. +FROM node:11 + +# Port 8100 for ionic dev server. +EXPOSE 8100 + +# Port 35729 is the live-reload server. +EXPOSE 35729 + +# Port 53703 is the Chrome dev logger port. +EXPOSE 53703 + +# MoodleMobile uses Cordova, Ionic, and Gulp. +RUN npm install -g cordova ionic gulp && rm -rf /root/.npm + +WORKDIR /app + +COPY . /app + +# The setup script will handle npm installation, cordova setup, and gulp setup. +RUN npm run setup && rm -rf /root/.npm + +# Provide a Healthcheck command for easier use in CI. +HEALTHCHECK --interval=10s --timeout=3s --start-period=30s CMD curl -f http://localhost:8100 || exit 1 + +CMD ["ionic", "serve", "-b"] diff --git a/hooks/post_push b/hooks/post_push new file mode 100644 index 000000000..047dc366e --- /dev/null +++ b/hooks/post_push @@ -0,0 +1,18 @@ +#!/bin/bash + +set -e + +if [ "integration" != "${SOURCE_BRANCH}" ] +then + # A space-separated list of additional tags to place on this image. + additionalTags=(latest) + + # Tag and push image for each additional tag + for tag in ${additionalTags[@]}; do + echo "Tagging {$IMAGE_NAME} as ${DOCKER_REPO}:${tag}" + docker tag $IMAGE_NAME ${DOCKER_REPO}:${tag} + + echo "Pushing ${DOCKER_REPO}:${tag}" + docker push ${DOCKER_REPO}:${tag} + done +fi