move labels to bottom, reduce layers

Change-Id: I56ddbff880f6c68a746f4ffc51ea5424a30b6289
diff --git a/Dockerfile b/Dockerfile
index 507433f..55a7b38 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -3,6 +3,46 @@
 # To run use: docker run -p 4000:4000 --volumes-from gui-extensions-store -d xosproject/xos-gui
 FROM nginx:candidate
 
+# 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 \
+     ${CODE_SOURCE}/gulpfile.js \
+     ${CODE_SOURCE}/tsconfig.json \
+     ${CODE_SOURCE}/tslint.json \
+     ${CODE_DEST}/
+COPY ${CODE_SOURCE}/conf/ ${CODE_DEST}/conf/
+COPY ${CODE_SOURCE}/gulp_tasks/ ${CODE_DEST}/gulp_tasks/
+COPY ${CODE_SOURCE}/src/ ${CODE_DEST}/src/
+
+# Install deps, build and create logdir
+WORKDIR ${CODE_DEST}
+RUN npm install \
+ && npm run typings \
+ && npm run build \
+ && mkdir -p /var/log/nginx/log
+
+# Override nginx configutaion
+COPY ${CODE_SOURCE}/nginx.conf /etc/nginx/conf.d/default.conf
+
+# expose the app port
+EXPOSE 4000
+
 # Label image
 ARG org_label_schema_schema_version=1.0
 ARG org_label_schema_name=xos-gui
@@ -20,40 +60,3 @@
       org.label-schema.build-date=$org_label_schema_build_date \
       org.opencord.vcs-commit-date=$org_opencord_vcs_commit_date
 
-# Set environment vars
-ENV CODE_SOURCE .
-ENV CODE_DEST /var/www
-ENV VHOST /var/www/dist
-
-# Install nodeJs
-RUN apt-get update
-RUN apt-get install curl git bzip2 gnupg -y
-RUN curl -sL https://deb.nodesource.com/setup_7.x > node_install.sh
-RUN bash node_install.sh
-RUN apt-get install -y nodejs
-
-# Add the app deps
-COPY ${CODE_SOURCE}/package.json ${CODE_DEST}/package.json
-COPY ${CODE_SOURCE}/typings.json ${CODE_DEST}/typings.json
-
-# Install Deps
-WORKDIR ${CODE_DEST}
-RUN npm install
-RUN npm run typings
-
-# Create folder for logs
-RUN mkdir -p /var/log/nginx/log
-
-# Build the app
-EXPOSE 4000
-COPY ${CODE_SOURCE}/conf ${CODE_DEST}/conf
-COPY ${CODE_SOURCE}/gulp_tasks ${CODE_DEST}/gulp_tasks
-COPY ${CODE_SOURCE}/src ${CODE_DEST}/src
-COPY ${CODE_SOURCE}/gulpfile.js ${CODE_DEST}/gulpfile.js
-COPY ${CODE_SOURCE}/tsconfig.json ${CODE_DEST}/tsconfig.json
-COPY ${CODE_SOURCE}/tslint.json ${CODE_DEST}/tslint.json
-RUN npm run build
-
-# Override nginx configutaion
-COPY ${CODE_SOURCE}/nginx.conf ${CODE_DEST}/nginx.conf
-RUN mv ${CODE_SOURCE}/nginx.conf /etc/nginx/conf.d/default.conf
diff --git a/Dockerfile.xos-gui-extension-builder b/Dockerfile.xos-gui-extension-builder
index a8c572f..ea41050 100644
--- a/Dockerfile.xos-gui-extension-builder
+++ b/Dockerfile.xos-gui-extension-builder
@@ -2,6 +2,20 @@
 
 FROM node:argon
 
+# Set environment vars
+ENV CODE_SOURCE .
+ENV CODE_DEST /var/www
+
+RUN mkdir -p ${CODE_DEST}
+
+# Add the app deps
+COPY ${CODE_SOURCE}/package.json ${CODE_SOURCE}/typings.json ${CODE_DEST}/
+
+# Install Deps
+WORKDIR ${CODE_DEST}
+RUN npm install \
+ && npm run typings
+
 # Label image
 ARG org_label_schema_schema_version=1.0
 ARG org_label_schema_name=xos-gui-extension-builder
@@ -19,17 +33,3 @@
       org.label-schema.build-date=$org_label_schema_build_date \
       org.opencord.vcs-commit-date=$org_opencord_vcs_commit_date
 
-# Set environment vars
-ENV CODE_SOURCE .
-ENV CODE_DEST /var/www
-
-RUN mkdir -p /var/www
-
-# Add the app deps
-COPY ${CODE_SOURCE}/package.json ${CODE_DEST}/package.json
-COPY ${CODE_SOURCE}/typings.json ${CODE_DEST}/typings.json
-
-# Install Deps
-WORKDIR ${CODE_DEST}
-RUN npm install
-RUN npm run typings
diff --git a/nodesource.gpg.key b/nodesource.gpg.key
new file mode 100644
index 0000000..1dc1d10
--- /dev/null
+++ b/nodesource.gpg.key
@@ -0,0 +1,52 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1
+Comment: GPGTools - https://gpgtools.org
+
+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
+=CLGF
+-----END PGP PUBLIC KEY BLOCK-----