[CORD-2188] Multi-stage build for xos-gui
Change-Id: I83e07c7af8f25af41fdfd46f0401d175253ccc1e
(cherry picked from commit 02784ea7daf995eb361b46bb79868925663419bc)
diff --git a/Dockerfile b/Dockerfile
index 55a7b38..7894b94 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,24 +1,13 @@
# xosproject/xos-gui
-# To build use: docker build -t xosproject/xos-gui .
+# To build use: docker build -f Dockerfile -t xosproject/xos-gui .
# To run use: docker run -p 4000:4000 --volumes-from gui-extensions-store -d xosproject/xos-gui
-FROM nginx:candidate
+FROM node:7.9.0 as xos-gui-base
# Set environment vars
ENV CODE_SOURCE .
ENV CODE_DEST /var/www
ENV VHOST /var/www/dist
-# Install Node.js
-COPY ${CODE_SOURCE}/nodesource.gpg.key /tmp/nodesource.gpg.key
-RUN apt-get update \
- && apt-get install -y gnupg apt-transport-https \
- && apt-key add /tmp/nodesource.gpg.key \
- && echo "deb https://deb.nodesource.com/node_7.x trusty main" \
- > /etc/apt/sources.list.d/nodesource.list \
- && apt-get update \
- && apt-get install -y curl git bzip2 nodejs \
- && rm -rf /var/lib/apt/lists/*
-
# copy over files
COPY ${CODE_SOURCE}/package.json \
${CODE_SOURCE}/typings.json \
@@ -30,16 +19,29 @@
COPY ${CODE_SOURCE}/gulp_tasks/ ${CODE_DEST}/gulp_tasks/
COPY ${CODE_SOURCE}/src/ ${CODE_DEST}/src/
-# Install deps, build and create logdir
+# Install deps and build
WORKDIR ${CODE_DEST}
RUN npm install \
&& npm run typings \
- && npm run build \
- && mkdir -p /var/log/nginx/log
+ && npm run build
+
+
+FROM nginx:candidate
+
+ENV CODE_SOURCE .
+ENV VHOST /var/www/dist
+
+WORKDIR ${VHOST}
+
+# create logdir
+RUN mkdir -p /var/log/nginx/log
# Override nginx configutaion
COPY ${CODE_SOURCE}/nginx.conf /etc/nginx/conf.d/default.conf
+# Copy minified app
+COPY --from=xos-gui-base ${VHOST} .
+
# expose the app port
EXPOSE 4000