Dockerizing the demo app
Less than to read
In this last step, you will lear how to package the demo app as a docker container. You need a Dockerfile to define the Docker container:
  # To build use docker build -t repository.sagex3.com/x3-cloud-metrics:latest . in the current directory
  FROM node:12-stretch
  USER root
  ENV LAST_UPD=VERSION-24-09-2020
  RUN apt-get -y update
  RUN DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
  #dumb-init entrypoint
  ADD https://github.com/Yelp/dumb-init/releases/download/v1.2.0/dumb-init_1.2.0_amd64 /usr/local/bin/dumb-init
  RUN chmod +x /usr/local/bin/dumb-init
  COPY nodejs/package.json /nodejs/package.json
  COPY bootstrap.sh /
  RUN chmod +x /bootstrap.sh
  WORKDIR /nodejs
  RUN node -v
  RUN npm -v
  RUN npm install
  COPY nodejs /nodejs
  WORKDIR /
  RUN ls
  ENTRYPOINT  ["/usr/local/bin/dumb-init" , "--", "/bootstrap.sh"]
And a bootstrap.sh as the entrypoint of that Docker container.
#!/bin/sh
cd /nodejs
npm start
These 2 files are placed at the same level of nodejs folder and need to be saved under UNIX format (with LF ending character). Now you will build your docker container:
  docker build -t demo-app:latest .
Then start the container with the right parameter on:
- 
    
“ENDPOINT_URL”: API Gateway of the sandbox environment
 - 
    
“CLIENT_ID”: your App ID
 - 
    
“CLIENT_SECRET”: your App secret
 
docker run -p 5050:5050 -e ENV_URL='https://localhost:5050' -e COLOR='Demo App' -e APPLICATION='green' -e ENDPOINT_URL='ENDPOINT_URL' -e CLIENT_ID='CLIENT_ID' -e CLIENT_SECRET='CLIENT_SECRET' demo-app:latest
Now you have a docker container deployed at https://localhost:5050 with the same functionality as your VSCode launched version.
You can also download the VSCode project at the end of this step here.