From 401a43c8db487e755f879bb906e89986840a575a Mon Sep 17 00:00:00 2001 From: swoodcoc Date: Wed, 2 Jun 2021 09:41:53 +0100 Subject: [PATCH 1/3] add production Dockerfile for deployment --- deploy/docker/prod.Dockerfile | 81 +++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 deploy/docker/prod.Dockerfile diff --git a/deploy/docker/prod.Dockerfile b/deploy/docker/prod.Dockerfile new file mode 100644 index 0000000000..8ecdd63ca4 --- /dev/null +++ b/deploy/docker/prod.Dockerfile @@ -0,0 +1,81 @@ +# Docker image for the primary terria map application server +ARG NODE_IMG_VERSION=14 +ARG APP_CONFIG_FILE=devserverconfig.json + +FROM node:${NODE_IMG_VERSION}-buster-slim as base +ARG http_proxy +ARG https_proxy +ARG no_proxy +# ### For corporate proxies, add your CA-Cert to the dir, then uncomment below. +# COPY ./CA-Cert.crt /usr/local/share/ca-certificates/ +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + git \ + ca-certificates \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* \ + && update-ca-certificates +# git -- required for node package url-loader +## DELME +COPY --from=redhbr001.cgg.com/satmap/debian:buster \ + /etc/ssl/certs/ca-certificates.crt \ + /etc/ssl/certs/ca-certificates.crt +## DELME +ENV SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt +# Add Proxy / CA Certs for Git, Yarn, NPM +RUN git config --global http.proxy ${http_proxy} \ + && git config --global https.proxy ${https_proxy} \ + && git config --global url."https://github.com/".insteadOf git@github.com: \ + && git config --global url."https://".insteadOf git:// \ + && git config --global http.sslCAInfo /etc/ssl/certs/ca-certificates.crt \ + && yarn config set proxy $http_proxy \ + && yarn config set https-proxy $https_proxy \ + && yarn config set no-proxy $no_proxy \ + && yarn config set cafile /etc/ssl/certs/ca-certificates.crt \ + && npm config set proxy $http_proxy \ + && npm config set https-proxy $https_proxy \ + && npm config set no-proxy $no_proxy \ + && npm config set cafile /etc/ssl/certs/ca-certificates.crt +ARG NODE_IMG_VERSION +ARG MAINTAINER +LABEL "NODE_IMG_VERSION"="${NODE_IMG_VERSION}" \ + "MAINTAINER"="${MAINTAINER}" \ + "SSL_CERT_FILE"="${SSL_CERT_FILE}" + + +FROM base as build +WORKDIR /opt/app +# Add TerriaMap and any modified packages (terriajs, cesium) +COPY . . +RUN yarn install +RUN npm run gulp release + + +FROM base as runtime +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + git \ + gdal-bin \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* +# Create non-root user +RUN groupadd -r terriauser -g 1001 \ + && useradd -u 1001 --no-log-init --create-home -r -g terriauser terriauser +# Move proxy config files from root to user +RUN mv /root/.npmrc /home/terriauser/.npmrc \ + && mv /usr/local/share/.yarnrc /home/terriauser/.yarnrc \ + && chown -R terriauser:terriauser /home/terriauser +WORKDIR /opt/app +COPY --from=build --chown=terriauser:terriauser \ + opt/app/node_modules ./node_modules +COPY --from=build --chown=terriauser:terriauser \ + opt/app/wwwroot ./wwwroot +COPY --from=build --chown=terriauser:terriauser \ + opt/app/*config.json . +USER terriauser:terriauser +EXPOSE 3001 +ARG APP_CONFIG_FILE +ENV APP_CONFIG_FILE ${APP_CONFIG_FILE} +CMD ["sh", "-c", \ + "node ./node_modules/terriajs-server/lib/app.js \ + --config-file $APP_CONFIG_FILE"] \ No newline at end of file From 626a413cb85041c3a75f79445ce1364d94651b33 Mon Sep 17 00:00:00 2001 From: Woodcock Date: Wed, 2 Jun 2021 10:14:15 +0100 Subject: [PATCH 2/3] remove CA-Certs import from local image --- deploy/docker/prod.Dockerfile | 5 ----- 1 file changed, 5 deletions(-) diff --git a/deploy/docker/prod.Dockerfile b/deploy/docker/prod.Dockerfile index 8ecdd63ca4..2b49117487 100644 --- a/deploy/docker/prod.Dockerfile +++ b/deploy/docker/prod.Dockerfile @@ -16,11 +16,6 @@ RUN apt-get update \ && rm -rf /var/lib/apt/lists/* \ && update-ca-certificates # git -- required for node package url-loader -## DELME -COPY --from=redhbr001.cgg.com/satmap/debian:buster \ - /etc/ssl/certs/ca-certificates.crt \ - /etc/ssl/certs/ca-certificates.crt -## DELME ENV SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt # Add Proxy / CA Certs for Git, Yarn, NPM RUN git config --global http.proxy ${http_proxy} \ From ca1e1ca74074f2c6fa6b8be67c90b60805cae0a9 Mon Sep 17 00:00:00 2001 From: swoodcoc Date: Wed, 2 Jun 2021 10:37:10 +0100 Subject: [PATCH 3/3] remove git from final image --- deploy/docker/prod.Dockerfile | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/deploy/docker/prod.Dockerfile b/deploy/docker/prod.Dockerfile index 2b49117487..bf28498cfc 100644 --- a/deploy/docker/prod.Dockerfile +++ b/deploy/docker/prod.Dockerfile @@ -10,7 +10,6 @@ ARG no_proxy # COPY ./CA-Cert.crt /usr/local/share/ca-certificates/ RUN apt-get update \ && apt-get install -y --no-install-recommends \ - git \ ca-certificates \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* \ @@ -18,12 +17,7 @@ RUN apt-get update \ # git -- required for node package url-loader ENV SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt # Add Proxy / CA Certs for Git, Yarn, NPM -RUN git config --global http.proxy ${http_proxy} \ - && git config --global https.proxy ${https_proxy} \ - && git config --global url."https://github.com/".insteadOf git@github.com: \ - && git config --global url."https://".insteadOf git:// \ - && git config --global http.sslCAInfo /etc/ssl/certs/ca-certificates.crt \ - && yarn config set proxy $http_proxy \ +RUN yarn config set proxy $http_proxy \ && yarn config set https-proxy $https_proxy \ && yarn config set no-proxy $no_proxy \ && yarn config set cafile /etc/ssl/certs/ca-certificates.crt \ @@ -39,6 +33,18 @@ LABEL "NODE_IMG_VERSION"="${NODE_IMG_VERSION}" \ FROM base as build +ARG http_proxy +ARG https_proxy +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + git \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* +RUN git config --global http.proxy ${http_proxy} \ + && git config --global https.proxy ${https_proxy} \ + && git config --global url."https://github.com/".insteadOf git@github.com: \ + && git config --global url."https://".insteadOf git:// \ + && git config --global http.sslCAInfo /etc/ssl/certs/ca-certificates.crt WORKDIR /opt/app # Add TerriaMap and any modified packages (terriajs, cesium) COPY . . @@ -49,7 +55,6 @@ RUN npm run gulp release FROM base as runtime RUN apt-get update \ && apt-get install -y --no-install-recommends \ - git \ gdal-bin \ && apt-get clean \ && rm -rf /var/lib/apt/lists/*