DEV Community

Subham Nandi
Subham Nandi

Posted on • Edited on

40 Days Of Kubernetes (3/40)

Day 3/40

Multi Stage Docker Builds

GitHub link - https://github.com/SUBHAM-NANDI/40DaysKubernetes/tree/main/Day%203

Docker multistage builds are a technique in Docker that allows you to use multiple FROM statements in a single Dockerfile to create separate build stages. Each stage can have its own base image, and you can selectively copy artifacts from one stage to another, which helps in creating a smaller and more optimized final image.

Key Benefits:

  1. Smaller Image Size: By including only the necessary components in the final image, you can significantly reduce the size of the Docker image.
  2. Enhanced Security: Reducing the number of layers and components in the final image minimizes the attack surface, making it more secure.
  3. Efficient Builds: You can reuse intermediate stages for different parts of your application, optimizing the build process.

Use Cases:

  • CI/CD Pipelines: Multistage builds are particularly useful in CI/CD pipelines where you want to build, test, and deploy applications efficiently.
  • Microservices: Ideal for microservices where you need lightweight and secure containers.

Step 1: Install Docker Desktop

  1. Visit the Docker website: Docker Desktop
  2. Download and install the Docker Desktop client on your machine.

Step 2: Set Up Your Application

  1. Clone the sample repository (or use your existing web application):
   git clone https://github.com/piyushsachdeva/todoapp-docker.git
Enter fullscreen mode Exit fullscreen mode
  1. Change directory into the project folder:
   cd todoapp-docker/
Enter fullscreen mode Exit fullscreen mode
  1. Create a new Dockerfile in the project directory:
   touch Dockerfile
Enter fullscreen mode Exit fullscreen mode

Step 3: Write the Dockerfile

  1. Open the Dockerfile in your favorite text editor.
  2. Paste the following content into the Dockerfile:
   FROM node:18-alpine AS installer
   WORKDIR /app
   COPY package*.json ./
   RUN npm install
   COPY . .
   RUN npm run build

   FROM nginx:latest AS deployer
   COPY --from=installer /app/build /usr/share/nginx/html
Enter fullscreen mode Exit fullscreen mode

Step 4: Build the Docker Image

  1. Build the Docker image using the code and Dockerfile:
   docker build -t todoapp-docker .
Enter fullscreen mode Exit fullscreen mode
  1. Verify the image was successfully created:
   docker images
Enter fullscreen mode Exit fullscreen mode

Step 5: Push the Image to Docker Hub

  1. Create a new repository on hub.docker.com.
  2. Log in to Docker Hub from your terminal:
   docker login
Enter fullscreen mode Exit fullscreen mode
  1. Tag your Docker image for the remote repository:
   docker tag todoapp-docker:latest username/reponame:tagname
Enter fullscreen mode Exit fullscreen mode
  1. Push the image to the remote repository:
   docker push username/reponame:tagname
Enter fullscreen mode Exit fullscreen mode

Step 6: Deploy and Run the Container

  1. To pull the image in a different environment:
   docker pull username/reponame:tagname
Enter fullscreen mode Exit fullscreen mode
  1. Start the Docker container:
   docker run -dp 3000:3000 username/reponame:tagname
Enter fullscreen mode Exit fullscreen mode
  1. Verify that your application is running by accessing localhost:3000 in your browser.

Step 7: Manage and Inspect the Container

  1. To enter the running container:
   docker exec -it containername sh
Enter fullscreen mode Exit fullscreen mode

or

   docker exec -it containerid sh
Enter fullscreen mode Exit fullscreen mode
  1. To view logs from the container:
   docker logs containername
Enter fullscreen mode Exit fullscreen mode

or

   docker logs containerid
Enter fullscreen mode Exit fullscreen mode
  1. To inspect the container’s details:
   docker inspect containername
Enter fullscreen mode Exit fullscreen mode

Step 8: Clean Up

  1. Remove old or unused Docker images:
   docker image rm image-id
Enter fullscreen mode Exit fullscreen mode

This version provides the same instructions with some variations in wording and structure.

Image of Datadog

The Future of AI, LLMs, and Observability on Google Cloud

Datadog sat down with Google’s Director of AI to discuss the current and future states of AI, ML, and LLMs on Google Cloud. Discover 7 key insights for technical leaders, covering everything from upskilling teams to observability best practices

Learn More

Top comments (0)

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more