Deploying a Web Application on Linux using Docker and Kubernetes

Webserver.com.my, the top digital marketing firm in Malaysia, created a digital tool to effectively manage and regulate your company's email. Businesses no longer need to manage email in-house thanks to WebServer's vps service, Private Email Hosting service, as all technical aspects of email delivery, including security, speed, and the option to outsource your entire email exosystem, are handled by our team of experts, leading to cost savings. Take advantage of WebServer's first-rate assistance while increasing your company's profits with our low-cost, adaptable marketing strategies. We offer the finest vps hosting and top vps malaysia service.


(Technology is always updating, changing at a very fast pace, depending on when you are reading this in future, the codes and steps shown here might not be working. Always find a recent tutorial. There are video links for 4 good Docker and Kubernetes tutorials, please watch them too and again always find the latest tutorials.)

Containerization and orchestration have revolutionized the way we deploy and manage web applications. Docker and Kubernetes are two powerful tools that, when combined, provide an efficient and scalable way to deploy web applications on Linux servers. In this comprehensive guide, we will walk you through the step-by-step process of deploying a web application using Docker and Kubernetes, enabling you to harness the full potential of these cutting-edge technologies.

 

Prerequisites

Before we dive into the deployment process, make sure you have the following prerequisites:

1. A Linux server or virtual machine with Docker and Kubernetes installed.

2. A web application containerized using Docker.

3. A basic understanding of Docker and Kubernetes concepts.

 

Part 1: Containerizing the Web Application with Docker

If your web application is not containerized yet, the first step is to create a Docker image that encapsulates your application and its dependencies. This allows for consistent and portable deployment across different environments.

 

Step 1: Dockerfile

Create a `Dockerfile` in the root directory of your web application. The `Dockerfile` contains instructions for building the Docker image.

Here's a basic example of a `Dockerfile` for a Node.js web application:

 

```Dockerfile

# Use a base image with Node.js pre-installed

FROM node:14

 

# Set the working directory inside the container

WORKDIR /app

 

# Copy package.json and package-lock.json to the container

COPY package*.json ./

 

# Install application dependencies

RUN npm install

 

# Copy the rest of the application files to the container

COPY . .

 

# Expose the port that the web application listens on

EXPOSE 3000

 

# Start the web application

CMD ["npm", "start"]

```

 

Step 2: Build the Docker Image

Use the following command to build the Docker image:

 

```bash

docker build -t your-app-name:latest .

```

 

Replace `your-app-name` with a meaningful name for your application.

 

Step 3: Test the Docker Image

You can test the Docker image locally by running it as a container:

 

```bash

docker run -d -p 3000:3000 your-app-name:latest

```

 

Open a web browser and navigate to `http://localhost:3000` to ensure that your web application is running correctly inside the Docker container.

 

Part 2: Deploying with Kubernetes

Now that your web application is containerized with Docker, let's move on to deploying it with Kubernetes.

 

Step 1: Set Up Kubernetes Cluster

If you don't already have a Kubernetes cluster, you can set up a local development cluster using Minikube or use a managed Kubernetes service like Google Kubernetes Engine (GKE), Amazon Elastic Kubernetes Service (EKS), or Microsoft Azure Kubernetes Service (AKS).

 

Step 2: Define Kubernetes Deployment

Create a Kubernetes deployment configuration file, such as `deployment.yaml`, to define how Kubernetes should run your application:

 

```yaml

apiVersion: apps/v1

kind: Deployment

metadata:

  name: your-app-deployment

spec:

  replicas: 3 # Adjust the number of replicas as needed for your application

  selector:

    matchLabels:

      app: your-app

  template:

    metadata:

      labels:

        app: your-app

    spec:

      containers:

        - name: your-app-container

          image: your-app-name:latest

          ports:

            - containerPort: 3000

```

 

Step 3: Apply the Deployment

Use `kubectl` to apply the deployment configuration and create the deployment:

 

```bash

kubectl apply -f deployment.yaml

```

 

Step 4: Expose the Deployment

Next, you need to expose your application to the internet by creating a Kubernetes Service. This allows external traffic to reach your web application pods.

 

Create a Service configuration file, such as `service.yaml`:

 

```yaml

apiVersion: v1

kind: Service

metadata:

  name: your-app-service

spec:

  selector:

    app: your-app

  ports:

    - protocol: TCP

      port: 80

      targetPort: 3000

  type: LoadBalancer

```

 

Apply the Service configuration:

 

```bash

kubectl apply -f service.yaml

```

 

Step 5: Verify Deployment

Verify that your application is running and accessible:

 

```bash

kubectl get deployments

kubectl get pods

kubectl get services

```

You should see your application's deployment, pods, and service listed.

 

Part 3: Scaling and Updating the Application

One of the major benefits of using Kubernetes is its ability to scale and update applications easily.

 

### Scaling the Application

 

To scale the application, you can adjust the number of replicas in the deployment configuration:

 

```bash

kubectl scale deployment your-app-deployment --replicas=5

```

 

This command increases the number of replicas to 5, effectively scaling your application horizontally.

 

Updating the Application

If you make changes to your web application's code, rebuild the Docker image with a new tag, and then update the Kubernetes deployment:

 

```bash

docker build -t your-app-name:new-version .

kubectl set image deployment/your-app-deployment your-app-container=your-app-name:new-version

```

This updates the application to the new version without downtime.

 

Conclusion

Deploying a web application on Linux using Docker and Kubernetes provides a scalable, reliable, and maintainable solution. With Docker, you can containerize your web application, ensuring consistency across different environments. Kubernetes takes care of managing the deployment, scaling, and updating of your application effortlessly.

By following the steps in this guide, you've learned how to containerize your web application with Docker, deploy it on a Kubernetes cluster, and leverage Kubernetes' powerful features for scaling and updating your application seamlessly. This powerful combination of Docker and Kubernetes empowers developers and operators to build and manage robust, cloud-native web applications with ease.

Ref:

1. Docker Crash Course for Absolute Beginners:

https://www.youtube.com/watch?v=pg19Z8LL06w

2. Docker Tutorial for Beginners [FULL COURSE in 3 Hours]

 https://www.youtube.com/watch?v=3c-iBn73dDE

3. Docker Containers and Kubernetes Fundamentals – Full Hands-On Course

https://www.youtube.com/watch?v=kTp5xUtcalw

4. Kubernetes Course - Full Beginners Tutorial (Containerize Your Apps!)

https://www.youtube.com/watch?v=d6WC5n9G_sM

 

 


Comments

Popular posts from this blog

Radiotherapy in Malaysia: A Comprehensive 2025 Guide

Health Protection: Avoiding Infections and Complications Acquired in Hospitals

Popular Sizes of LED Screen Displays in Malaysia and Their Prices