0
0
NestJSframework~10 mins

Docker containerization in NestJS - Step-by-Step Execution

Choose your learning style9 modes available
Concept Flow - Docker containerization
Write Dockerfile
Build Docker Image
Run Docker Container
NestJS App Runs Inside Container
Access App via Port Mapping
Container Stops or Restart
This flow shows how a NestJS app is containerized: writing a Dockerfile, building an image, running a container, and accessing the app.
Execution Sample
NestJS
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
CMD ["npm", "run", "start:prod"]
This Dockerfile sets up a NestJS app environment, installs dependencies, copies code, builds the app, and starts the app in production mode.
Execution Table
StepActionDetailsResult
1Read DockerfileFROM node:18-alpineBase image set to Node 18 Alpine
2Set working directoryWORKDIR /appWorking directory inside container is /app
3Copy package filesCOPY package*.json ./package.json and package-lock.json copied
4Install dependenciesRUN npm installNode modules installed inside container
5Copy app codeCOPY . .All app files copied into /app
6Build appRUN npm run buildNestJS app compiled to /app/dist
7Set start commandCMD ["npm", "run", "start:prod"]Container will run NestJS app in production
8Build imagedocker build -t nestjs-app .Docker image 'nestjs-app' created
9Run containerdocker run -p 3000:3000 nestjs-appContainer runs, app accessible on localhost:3000
10Access appOpen browser at http://localhost:3000NestJS app responds to requests
11Stop containerCtrl+C or docker stopContainer stops running
💡 Container stops when user stops it or system shuts down
Variable Tracker
VariableStartAfter Step 3After Step 5After Step 9Final
Docker ImageNoneBase image setApp code addedImage builtImage ready to run
ContainerNoneNoneNoneRunning with appStopped or running
Key Moments - 3 Insights
Why do we copy package.json files before running npm install?
Copying package.json first allows Docker to cache npm install step if dependencies don't change, speeding up rebuilds (see execution_table step 3 and 4).
What does the CMD instruction do in the Dockerfile?
CMD sets the command to run when the container starts, here it runs the NestJS app in production mode (see execution_table step 7).
Why map port 3000 in docker run command?
Port mapping (-p 3000:3000) connects container's port 3000 to host's port 3000, so you can access the app from your browser (see execution_table step 9 and 10).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, at which step is the NestJS app code copied into the Docker image?
AStep 3
BStep 4
CStep 5
DStep 6
💡 Hint
Check the 'Action' and 'Details' columns for copying app code.
At which step does the container start running the NestJS app?
AStep 9
BStep 7
CStep 8
DStep 6
💡 Hint
Look for 'Run container' action in the execution table.
If you forget to map port 3000 in the docker run command, what happens?
AYou can still access the app on localhost:3000
BYou cannot access the app from your host machine
CThe container will not start
DThe app runs on a different port automatically
💡 Hint
Refer to step 9 and 10 about port mapping and app access.
Concept Snapshot
Docker containerization for NestJS:
- Write a Dockerfile with base image, copy files, install dependencies
- Build image with 'docker build'
- Run container with port mapping 'docker run -p host:container'
- Container runs NestJS app isolated
- Access app via mapped port on host
- Stop container when done
Full Transcript
Docker containerization for a NestJS app involves creating a Dockerfile that starts from a Node.js base image, sets a working directory, copies package files, installs dependencies, copies the app code, and sets the command to run the app. The Docker image is built using 'docker build', then run with 'docker run' including port mapping to access the app from the host machine. The container runs the NestJS app isolated from the host environment. You can access the app in a browser via the mapped port. The container stops when you stop it manually or the system shuts down.