Let's add Docker support to the NestJS To-Do App with MongoDB. This includes a Dockerfile, a docker-compose.yml file, and necessary environment variables.
1. Create a .dockerignore
File
This file prevents unnecessary files from being copied to the Docker image.
Create .dockerignore
in the root directory:
node_modules dist .git .env Dockerfile
2. Create a Dockerfile
This file defines the steps to build the NestJS application inside a Docker container.
Create a Dockerfile
in the root directory:
# Use Node.js Alpine for a smaller image FROM node:20-alpine # Set working directory WORKDIR /TODO-APP # Copy package.json and yarn.lock before installing dependencies COPY package.json yarn.lock ./ # Install dependencies with Yarn RUN yarn install --frozen-lockfile # Copy all source files COPY . . # Expose port 3000 EXPOSE 3000 # Start the application CMD ["yarn", "start:dev"]
3. Create docker-compose.yml
This file defines how our services (NestJS API + MongoDB) run together.
Create docker-compose.yml
in the root directory:
version: '3.8' services: app: build: . container_name: nest-todo-app restart: always env_file: - .env ports: - '3000:3000' volumes: - .:/TODO-APP command: yarn start:dev
4. Build and Run the Docker Containers
Run the following command to start the app and MongoDB:
docker-compose up --build
5. Verify Everything Works
- Open http://localhost:3000/todos to check the API.
- Use Postman or cURL to test the endpoints.
6. Stop the Containers
To stop the containers, run:
docker-compose down
7. Check If the App is Running
Run:
docker ps
You should see:
CONTAINER ID IMAGE COMMAND PORTS NAMES xxxxxxxxxxx nest-todo-app "yarn start:dev" 0.0.0.0:3000->3000/tcp nest-todo-app
If it fails, check logs with:
docker logs -f nest-todo-app
My Git: https://github.com/Taki089Linux/nestj-todo-app/tree/setup-docker
Top comments (0)