Building an Apache Web Server through a Dockerfile

Filed Under: Random
Apache Web Server With Dockerfile

Hello, readers! In this article, we will be focusing on Building an Apache Web Server through a Dockerfile.

So, let us begin! 🙂


What is Apache Server?

Apache Server is an open source web server to configure and host the web applications online and locally as well using localhost as the medium.

It requires a lot of configuration when one wishes to set up an apache server on the workstation.

To reduce this over, Docker has introduced the concept of Dockerfile to build and set up configurations easily.

In the course of this topic, we will be setting up Apache server on our systems with just minimal steps to work with.

Let us begin 🙂


Apache Server through a Dockerfile

We need to follow the below steps to set up an Apache Server through a Dockerfile-

  1. Create a directory for all the files related to apache set up
  2. Create a Dockerfile
  3. Build an image over the Dockerfile and tag the same for convenience
  4. Run the apache server as a container

Step 1: Create a directory for apache server files

At first, we make use of the below mkdir command to create a directory specifically for all the apache related files.

mkdir apache_folder

Step 2: Building a Dockerfile

Having created a folder as shown above, now we go ahead and create a Dockerfile within that folder with the vi editor

vi Dockerfile

As soon as we execute the above command, a vi editor opens. Paste the below content in the Dockerfile and perform the below steps to exit the editor-

Press ESC<:<wq!<Enter

FROM ubuntu 
RUN apt update 
RUN apt install –y apache2 
RUN apt install –y apache2-utils 
RUN apt clean 
EXPOSE 80 CMD [“apache2ctl”, “-D”, “FOREGROUND”]

Step 3: Tag and Build the docker image

Now, we build the Dockerfile using docker build command. Within which, we tag the image to be created as 1.0 and give a customized name to our image i.e. apache_image.

docker build -t apache_image:1.0 .

Once the image has been built, we should check for the presence of the image using docker images command.

The docker images command gives us a list of all the images that are built or pulled from any public/private registry.

docker images
REPOSITORY                                                      TAG                 IMAGE ID            CREATED             SIZE
apache_image                                                     1.0                 a738dbef66ef        15 seconds ago      133MB

Step 4: Run the docker image as a container

Once the image has been built, run the image as a container locally. For the same, the below configurations are required–

  1. We run the container in detached mode so that it runs continuously in the background. For the same, include -d in the docker run command.
  2. In order to host the apache server, we provide port 80 (HTTP) for the same. Make use of -p 80:80 to have the server running on localhost.

Thus, docker run command also takes the image along with the associated tag as input to run it as a container.

docker run --name myapache -d -p 80:80 apache_image:1.0
docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
443848c30b74        apache_image:1.0     "/docker-entrypoint.…"   7 seconds ago       Up 6 seconds        0.0.0.0:80->80/tcp   myapache

Step 5: Review the online presence of Apache Server

In order to test the presence of Apache server on the system, visit any local browser and type localhost.

The below page should be seen as output–

Image
Apache Server – localhost

Conclusion

By this, we have come to the end of this topic. Feel free to comment below, in case you come across any question.

For more such posts related to Docker, Stay tuned with us.

Do let us know your experience in setting up the Apache Server onto your workstations, in the comment box.

Till then, Happy Learning! 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

close
Generic selectors
Exact matches only
Search in title
Search in content