To build a Docker image for a React application with an Nginx server for a blog, you'll follow a similar process as before, but you may need to adjust the configurations to accommodate the specific needs of your blog application. Below is an example Dockerfile for building such an image:

                            Fig 1:

    

```Dockerfile

# Use Node.js image as the base image for building React app

FROM node:14 AS builder


# Set working directory in the container

WORKDIR /app


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

COPY package*.json ./


# Install dependencies

RUN npm install


# Copy the entire React app to the container

COPY . .


# Build the React app

RUN npm run build


# Use Nginx image as the base image for serving React app

FROM nginx:alpine


# Copy the built React app from the builder stage to the Nginx server

COPY --from=builder /app/build /usr/share/nginx/html


# Remove default Nginx configuration

RUN rm /etc/nginx/conf.d/default.conf


# Copy custom Nginx configuration

COPY nginx.conf /etc/nginx/conf.d


# Expose port 80

EXPOSE 80


# Start Nginx server

CMD ["nginx", "-g", "daemon off;"]

```

In this Dockerfile, we've included a custom Nginx configuration file called `nginx.conf`. This file should be present in the same directory as the Dockerfile and should contain the necessary configuration for serving your blog application. Here's an example `nginx.conf` file:


```nginx

server {

    listen 80;

    server_name localhost;


    location / {

        root   /usr/share/nginx/html;

        index  index.html index.htm;

        try_files $uri $uri/ /index.html;

    }

}

```

This configuration file tells Nginx to serve the React application from the `/usr/share/nginx/html` directory and to redirect all requests to the `index.html` file, which is typical for single-page applications like React.

To build the Docker image using this Dockerfile, make sure the Dockerfile and `nginx.conf` files are in the root directory of your React project, and then run the following command:


```bash

docker build -t my-react-blog .

```

After the build process completes, you can run a container using the built image:


```bash

docker run -p 8080:80 my-react-blog

```

This command will run the container and map port 8080 on your local machine to port 80 inside the container, where Nginx is serving the React blog application.


Now you should be able to access your React blog by visiting `http://localhost:8080` in your web browser.