In this lesson, we add a Docker configuration to our project. In the Dockerfile we specify the different layers of our Docker image. We use a pretty standard Dockerfile and use the build and start scripts in our package.json do the actual work.
We create a shortcut called docker:build to quickly build an image.
When building the image, we see that the context being sent to the container is huge. By adding a .dockerignore file we can exclude what is being sent. We add dist and node_modules.
Other scripts we add are docker:run and docker:push.
Dockerfile:
FROM node:14-alpine WORKDIR /workspace COPY package.json yarn.lock /workspace/ RUN yarn COPY . . RUN yarn build CMD ["yarn", "start"]
.dockerignore:
dist
node_modules
scripts:
"start": "node dist/apps/api/main", "build": "nx build api --prod",
"docker:build": "docker build . -t myapp/api",
"docker:run": "docker run -it -p 8000:3000 myapp/api",
"docker:push": "docker push myapp/api",