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 @@
# 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/
### Builder Stage (Multi-Stage Docker Build)
# 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
WORKDIR /usr/src/app
WORKDIR $NODEROOT
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json AND tslint.json AND tsconfig.json are copied
# where available (npm@5+)
# A wildcard is used to ensure the following are copied
# package.json AND package-lock.json AND tslint.json AND tsconfig.json are copied where available (npm@5+)
COPY *.json ./
# Install all dependencies and copy results
......@@ -21,17 +24,16 @@ COPY . .
# Build library and canvas application then copy results
RUN npm run build
RUN npm run build-canvas
COPY build/canvas/ build/canvas/
# Open ports for HTTP
EXPOSE 8080/tcp
COPY . .
# Setup standalone simple webserver to run the demo
RUN npm install http-server -g
### Runtime Stage (Multi-Stage Docker Build)
FROM httpd:2.4 as runtime
ENV NODEROOT /usr/src/app
ENV HTTPDROOT /usr/local/apache2/htdocs/
# Start NodeJS at container stand up
CMD [ "http-server", "build/canvas/", "-p", "8080" ]
## Code must be placed into /usr/local/apache2/htdocs/
WORKDIR $HTTPDROOT
COPY --from=builder $NODEROOT/build/canvas/ .
# Developer helpers (what is inside this container?)
RUN node -v
RUN ls -alh
# Open ports for HTTP
EXPOSE 80
......@@ -83,11 +83,11 @@ and navigate to `build/viewer`
Build the docker image
docker build -t molstar-proto .
docker build -t molstar/proto:httpd .
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.
Finish editing this message first!
Please register or to comment