diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000000000000000000000000000000000000..ab40bee7b148c606c519a425b810704c92691b29 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,4 @@ +.* +node_modules +npm-debug.log +*.sublime-project \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..0a03541a99355e1902a76547e2b0b550e21a1bb2 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,40 @@ +# This is to build a container that demos the Molstar Canvas prototype +# Source material: https://nodejs.org/en/docs/guides/nodejs-docker-webapp/ +# 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/ + +# Use the slimed NodeJS source, yielding a space savings of 600MB (~66% of total) +FROM node:alpine + +# Create app directory +WORKDIR /usr/src/app + +# 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+) +COPY *.json ./ + +# Install all dependencies and copy results +RUN npm install +COPY . . + +# Build application and bundle results +RUN npm run build +COPY build/ build/ + +# Build Canvas application and bundle results +RUN npm run build-canvas +COPY build/ build/ + +# Open ports for HTTP +EXPOSE 8080/tcp + +# Setup standalone simple webserver to run the demo +RUN npm install http-server -g + +# Start NodeJS at container stand up +CMD [ "http-server", "build/canvas/", "-p", "8080" ] + +# Developer helpers (what is inside this container?) +RUN node -v +RUN ls -alh diff --git a/README.md b/README.md index 97489da489920b579a693ca4c8305ce75fb33e23..dde6fcb355b95f304ca7a3e1635e5a69eb83aa57 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,19 @@ From the root of the project: and navigate to `build/viewer` + +**Run via Docker** + +Build the docker image + + docker build -t molstar-proto . + +Run the image + + docker run -p 8080:8080 molstar-proto + + + ### Code generation **CIF schemas**