From e797a3a141e799f5c020678366e52527ee2d1289 Mon Sep 17 00:00:00 2001 From: dannyrb Date: Wed, 25 Sep 2019 23:16:00 -0400 Subject: [PATCH 1/2] Add modified dockerfile from previous version --- .docker/Viewer-v2.x/default.conf | 12 ++++++ .docker/Viewer-v2.x/entrypoint.sh | 19 +++++++++ .dockerignore | 30 +++++++++++++++ Dockerfile | 64 +++++++++++++++++++++++++++++++ 4 files changed, 125 insertions(+) create mode 100644 .docker/Viewer-v2.x/default.conf create mode 100644 .docker/Viewer-v2.x/entrypoint.sh create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.docker/Viewer-v2.x/default.conf b/.docker/Viewer-v2.x/default.conf new file mode 100644 index 000000000..93cba3df8 --- /dev/null +++ b/.docker/Viewer-v2.x/default.conf @@ -0,0 +1,12 @@ +server { + listen 80; + location / { + root /usr/share/nginx/html; + index index.html index.htm; + try_files $uri $uri/ /index.html; + } + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } +} diff --git a/.docker/Viewer-v2.x/entrypoint.sh b/.docker/Viewer-v2.x/entrypoint.sh new file mode 100644 index 000000000..9f033feb6 --- /dev/null +++ b/.docker/Viewer-v2.x/entrypoint.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# If CLIENT_ID is specified, use the google.js configuration with the modified ID +if [ ! -z "$CLIENT_ID" ] + then + echo "Google Cloud Healthcare $CLIENT_ID has been provided: " + echo $CLIENT_ID + echo "Updating config..." + + # - Use SED to replace the CLIENT_ID that is currently in public/config/google.js + sed -i -e "s/YOURCLIENTID.apps.googleusercontent.com/$CLIENT_ID/g" /usr/share/nginx/html/config/google.js + + # - Copy public/config/google.js to overwrite public/config/default.js + cp /usr/share/nginx/html/config/google.js /usr/share/nginx/html/config/default.js +fi + +echo "Starting Nginx to serve the OHIF Viewer..." + +exec "$@" diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..d4a539c50 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,30 @@ +# Reduces size of context and hides +# files from Docker (can't COPY or ADD these) + +# Output +dist/ +build/ + +# Dependencies +node_modules/ + +# Root +README.md +Dockerfile +dockerfile + +# Misc. Config +.git +.DS_Store +.gitignore +.vscode +.circleci + +# Unnecessary things to pull into container +.circleci/ +.github/ +.netlify/ +.scripts/ +.vscode/ +coverage/ +docs/ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..faa58439b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,64 @@ +# This dockerfile is used to publish the `ohif/viewer` image on dockerhub. +# +# It's a good example of how to build our static application and package it +# with a web server capable of hosting it as static content. +# +# docker build +# -------------- +# If you would like to use this dockerfile to build and tag an image, make sure +# you set the context to the project's root directory: +# https://docs.docker.com/engine/reference/commandline/build/ +# +# +# SUMMARY +# -------------- +# This dockerfile has two stages: +# +# 1. Building the React application for production +# 2. Setting up our Nginx (Alpine Linux) image w/ step one's output +# + + +# Stage 1: Build the application +# docker build -t ohif/viewer:latest . +FROM node:10.16.3-slim as builder + +RUN mkdir /usr/src/app +WORKDIR /usr/src/app + +# Copy Files +COPY .docker /usr/src/app/.docker +COPY .webpack /usr/src/app/.webpack +COPY extensions /usr/src/app/extensions +COPY platform /usr/src/app/platform +COPY .browserslistrc /usr/src/app/.browserslistrc +COPY aliases.config.js /usr/src/app/aliases.config.js +COPY babel.config.js /usr/src/app/babel.config.js +COPY lerna.json /usr/src/app/lerna.json +COPY package.json /usr/src/app/package.json +COPY postcss.config.js /usr/src/app/postcss.config.js +COPY yarn.lock /usr/src/app/yarn.lock + +# Run the install before copying the rest of the files +RUN yarn config set workspaces-experimental true +RUN yarn install + +ENV PATH /usr/src/app/node_modules/.bin:$PATH +# ENV GENERATE_SOURCEMAP=false +# ENV REACT_APP_CONFIG=config/default.js + +RUN yarn run build + +# Stage 2: Bundle the built application into a Docker container +# which runs Nginx using Alpine Linux +FROM nginx:1.15.5-alpine +RUN apk add --no-cache bash +RUN rm -rf /etc/nginx/conf.d +COPY .docker/Viewer-v2.x /etc/nginx/conf.d +COPY .docker/Viewer-v2.x/entrypoint.sh /usr/src/ +RUN chmod 777 /usr/src/entrypoint.sh +COPY --from=builder /usr/src/app/platform/viewer/dist /usr/share/nginx/html +EXPOSE 80 +EXPOSE 443 +ENTRYPOINT ["/usr/src/entrypoint.sh"] +CMD ["nginx", "-g", "daemon off;"] From 65d852b9e408e8ec2f05893dbedda93c5de80710 Mon Sep 17 00:00:00 2001 From: dannyrb Date: Wed, 25 Sep 2019 23:39:42 -0400 Subject: [PATCH 2/2] enable ci --- .circleci/config.yml | 14 +++++++------- platform/viewer/package.json | 3 ++- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 1ecd9c3d9..d9ab56748 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -149,13 +149,13 @@ jobs: command: | # This file will exist if a new version was published by # our `semantic-release` command in the previous job - if [[ ! -e tmp/updated-version.txt ]]; then + if [[ ! -e platform/viewer/success_version.txt ]]; then exit 0 else # Remove npm config rm -f ./.npmrc # Set our version number using vars - export IMAGE_VERSION=$(cat tmp/updated-version.txt) + export IMAGE_VERSION=$(cat platform/viewer/success_version.txt) export IMAGE_VERSION_FULL=v$IMAGE_VERSION.${CIRCLE_BUILD_NUM} echo $IMAGE_VERSION echo $IMAGE_VERSION_FULL @@ -324,6 +324,7 @@ workflows: requires: - 'E2E: Script Tag' - 'E2E: PWA' + # Update docs.ohif.org - DOCS_PUBLISH: requires: - 'E2E: Script Tag' @@ -332,12 +333,11 @@ workflows: requires: - 'E2E: Script Tag' - 'E2E: PWA' + # Update viewer.ohif.org - VIEWER_DEMO_PUBLISH: requires: - VIEWER_DEMO_BUILD # Update hub.docker.org - # - DOCKER_PUBLISH: - # requires: - # - NPM_PUBLISH - # Update viewer.ohif.org - # Update docs.ohif.org + - DOCKER_PUBLISH: + requires: + - NPM_PUBLISH diff --git a/platform/viewer/package.json b/platform/viewer/package.json index 3c795acf9..b02803200 100644 --- a/platform/viewer/package.json +++ b/platform/viewer/package.json @@ -33,7 +33,8 @@ "test:e2e:serve": "serve -l 3000 -s dist", "test:unit": "jest --watchAll", "test:unit:ci": "jest --ci --runInBand --collectCoverage", - "prepublishOnly": "yarn run build:package" + "prepublishOnly": "yarn run build:package", + "postpublish": "node -p -e \"require('./package.json').version\" > success_version.txt" }, "files": [ "dist",