Dockerizing an application

Containers are made up of images. Images contain your project and it's dependencies.

Exercise
Answer
Exercise
  • Add a Dockerfile to the start project. The Dockerfile should do the following...

    • Include a base Node image

    • Copy all the project files into the image

    • Run an npm install

    • Expose port 3000

    • Run npm start

  • Build the image

Answer
  • Open the Command Palette (Cmd/Ctrl + Shift + P)

  • Select "Add Dockefiles to workspace"

  • Select the "start" project

  • Select "Node.js" from the prompt

  • Enter "3000" in the prompt

  • VS Code will add "Dockerfile", "docker-compose.yml" and "debug.docker-compose.yml" files to the project

  • Open the "Dockerfile" in the "start" project

  • Add two ENV variables, "API_BASE" and "PORT"

FROM node:10.13-alpine
ENV NODE_ENV production
ENV API_BASE https://lifx-lamp-api.azurewebsites.net/api
ENV PORT 3000
WORKDIR /usr/src/app
COPY ["package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"]
RUN npm install --production --silent && mv node_modules ../
COPY . .
EXPOSE 3000
CMD npm start
  • Open the Command Palette (Cmd/Ctrl + Shift + P)

  • Select "Docker Images: Build Image"

  • Select "start" as the workspace folder

  • Take the default image tag

  • An integrated terminal instance will open and Docker will build the image

Note that if you get an error saying "cannot connect to Docker daemon", make sure that Docker is installed and running on your machine.