Lab 1: Get to know Docker
Docker is an open platform for developing, shipping, and running applications.
Docker enables you to separate your applications from your infrastructure so you can deliver software quickly. With Docker, you can manage your infrastructure in the same ways you manage your applications. By taking advantage of Docker’s methodologies for shipping, testing, and deploying code quickly, you can significantly reduce the delay between writing code and running it in production.
Docker provides the ability to package and run an application in a loosely isolated environment called a container. The isolation and security allow you to run many containers simultaneously on a given host. Containers are lightweight because they don’t need the extra load of a hypervisor, but run directly within the host machine’s kernel. This means you can run more containers on a given hardware combination than if you were using virtual machines. You can even run Docker containers within host machines that are actually virtual machines!
More details on Docker
can be found here.
Dockerfile
A Dockerfile
is a text document that contains all the commands a user could call on the command line to assemble an image.
FROM node:8-stretch
# Change working directory
WORKDIR "/app"
# Update packages and install dependency packages for services
RUN apt-get update \
&& apt-get dist-upgrade -y \
&& apt-get clean \
&& echo 'Finished installing dependencies'
# Install npm production packages
COPY package.json /app/
RUN cd /app; npm install --production
COPY . /app
ENV NODE_ENV production
ENV BACKEND_URL https://api.nasa.gov/planetary/apod\?api_key\=DEMO_KEY
ENV PORT 3000
EXPOSE 3000
CMD ["npm", "start"]
The docker build
command creates the container from the Dockerfile
.
More details on Dockerfiles can be found here.