Skip to main content

Command Palette

Search for a command to run...

Create a image which runs on port 8080 apache2 & nginx

Published
3 min read
Create a image which runs on port 8080 apache2 & nginx
A
I work with Linux, Docker, Kubernetes, AWS, and DevOps technologies through hands-on projects and continuous learning. I enjoy solving problems, building projects, and understanding how systems work. I regularly write technical blogs to document and share what I learn. I also volunteer within the open-source community and enjoy contributing to community-driven initiatives, events, and knowledge sharing. Connect with me: • LinkedIn: linkedin.com/in/abhaydandge • X (Twitter): x.com/ABHAYDPATIL96 • GitHub: github.com/abhay-dandge • Hashnode: https://hashnode.com/@AbhayDandge • Medium: https://medium.com/@abhay.d.patil96 • Email: abhay.d.patil96@gmail.com I am always open to discussions around Linux, Cloud, DevOps + Spirituality, Open Source, and technology in general.

Creating an image that runs both Apache HTTP Server (Apache2) and NGINX on port 8080 is an interesting challenge in containerization and web server management. Here's a comprehensive guide that explores how to achieve this, covering Dockerfile creation, configuration, networking, and deployment considerations.

Introduction to Docker and Containerization

Docker has revolutionized software deployment by enabling the packaging of applications and their dependencies into standardized units called containers. Containers provide consistency across development, testing, and production environments, ensuring applications run seamlessly regardless of the underlying infrastructure. NGINX and Apache2, two popular web servers, can be efficiently managed and deployed using Docker containers, allowing developers and system administrators to streamline deployment processes and enhance scalability.

Understanding NGINX and Apache2

NGINX Overview

NGINX is a high-performance web server known for its speed, efficiency, and scalability. Originally designed as a reverse proxy server, NGINX is widely used today as a web server, load balancer, and HTTP cache. Key features include:

  • Efficient handling of concurrent connections.

  • Support for reverse proxying, load balancing, and caching.

  • Flexible configuration through a declarative language.

Apache2 Overview

Apache HTTP Server, commonly referred to as Apache2, is one of the oldest and most widely used web servers globally. Known for its modularity and extensibility, Apache2 supports a wide range of features and configurations, including:

  • Virtual hosting to host multiple websites on a single server.

  • Extensive module support for functionalities like SSL/TLS, URL rewriting, and authentication.

  • Robust community support and extensive documentation.

Example

Dockerizing Apache2

Creating a Dockerfile for Apache2

To create a Docker image that runs Apache2 on port 8080, we'll start by defining a Dockerfile. The Dockerfile specifies the instructions needed to build the Docker image, including installing software packages, configuring settings, and exposing ports.

# Start with a base image
FROM docker.io/ubuntu

# Install NGINX and Apache2
RUN apt update -y
RUN apt install apache2 -y

# Configure Apache2 to listen on port 8080
RUN sed -i 's/Listen 80/Listen 8080/g' /etc/apache2/ports.conf

# Expose port 8080
EXPOSE 8080

# Start NGINX and Apache2 services
CMD service apache2 start

Explanation of Dockerfile Instructions

  • FROM ubuntu:latest: Specifies the base image as the latest Ubuntu version.

  • RUN apt-get update && ...: Updates package lists and installs Apache2. Cleans up after installation to reduce image size.

  • RUN sed -i 's/80/8080/g' ...: Modifies Apache2 configurations to listen on port 8080 instead of the default port 80.

  • EXPOSE 8080: Informs Docker that the container will listen on port 8080 at runtime.

  • CMD service apache2 start ...: StartsApache2 services when the container starts and keeps the container running

Building and Running the Docker Image

To build the Docker image:

docker build -t apache2 .

To run the Docker container:

docker run -d -p 8080:8080 apache2

Testing the Setup

After running the Docker container, you can test the setup by accessing http://localhost:8080 in your web browser. Apache2 should also respond, demonstrating that both servers are running on port 8080 within the Docker container.

Same For NGINX

Conclusion

In conclusion, Docker provides a powerful platform for managing and deploying web servers like NGINX and Apache2. By containerizing these services, developers gain flexibility, scalability, and consistency in application deployment across different environments. This guide has demonstrated how to create a Docker image that runs both NGINX and Apache2 on port 8080, showcasing the ease and efficiency of using Docker for managing complex web server configurations. By leveraging Docker's capabilities, organizations can streamline their development processes and enhance the reliability and scalability of their web applications.

More from this blog

Untitled Publication

25 posts