Skip to content
Snippets Groups Projects
Commit 484420bb authored by Cole Christie's avatar Cole Christie
Browse files

Address issues with building the container on Linux vs Mac, reduce image size

parent 8e3e93b6
No related branches found
No related tags found
No related merge requests found
...@@ -3,15 +3,18 @@ ...@@ -3,15 +3,18 @@
# Source material: https://derickbailey.com/2017/05/31/how-a-650mb-node-js-image-for-docker-uses-less-space-than-a-50mb-image/ # Source material: https://derickbailey.com/2017/05/31/how-a-650mb-node-js-image-for-docker-uses-less-space-than-a-50mb-image/
# Source material: https://hub.docker.com/_/node/ # Source material: https://hub.docker.com/_/node/
### Builder Stage (Multi-Stage Docker Build)
# Use the slimed NodeJS source, yielding a space savings of 600MB (~66% of total) # Use the slimed NodeJS source, yielding a space savings of 600MB (~66% of total)
FROM node:alpine FROM node:alpine as builder
ENV NODEROOT /usr/src/app/
# Create app directory # Create app directory
WORKDIR /usr/src/app WORKDIR $NODEROOT
# Install app dependencies # Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json AND tslint.json AND tsconfig.json are copied # A wildcard is used to ensure the following are copied
# where available (npm@5+) # package.json AND package-lock.json AND tslint.json AND tsconfig.json are copied where available (npm@5+)
COPY *.json ./ COPY *.json ./
# Install all dependencies and copy results # Install all dependencies and copy results
...@@ -21,17 +24,16 @@ COPY . . ...@@ -21,17 +24,16 @@ COPY . .
# Build library and canvas application then copy results # Build library and canvas application then copy results
RUN npm run build RUN npm run build
RUN npm run build-canvas RUN npm run build-canvas
COPY build/canvas/ build/canvas/ COPY . .
# Open ports for HTTP
EXPOSE 8080/tcp
# Setup standalone simple webserver to run the demo ### Runtime Stage (Multi-Stage Docker Build)
RUN npm install http-server -g FROM httpd:2.4 as runtime
ENV NODEROOT /usr/src/app
ENV HTTPDROOT /usr/local/apache2/htdocs/
# Start NodeJS at container stand up ## Code must be placed into /usr/local/apache2/htdocs/
CMD [ "http-server", "build/canvas/", "-p", "8080" ] WORKDIR $HTTPDROOT
COPY --from=builder $NODEROOT/build/canvas/ .
# Developer helpers (what is inside this container?) # Open ports for HTTP
RUN node -v EXPOSE 80
RUN ls -alh
...@@ -83,11 +83,11 @@ and navigate to `build/viewer` ...@@ -83,11 +83,11 @@ and navigate to `build/viewer`
Build the docker image Build the docker image
docker build -t molstar-proto . docker build -t molstar/proto:httpd .
Run the image Run the image
docker run -p 8080:8080 molstar-proto docker run -d -p 80:80 molstar/proto:httpd
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment