Docker NGINX

Docker NGINX Tutorial – We shall learn to run NGINX in a Docker Container on Ubuntu. Following is a step by step guide to dockerize NGINX :

1 Install Docker Engine

Docker is the prerequisite.

Follow the tutorial, Install Docker on Ubuntu, to install docker on your computer with Ubuntu.

2 Pull NGINX from Docker Hub

Run the following command to pull NGINX from Docker Hub to Docker Host.

$ sudo docker pull nginx
arjun@arjun-VPCEH26EN:~$ sudo docker pull nginx
[sudo] password for arjun: 
Using default tag: latest
latest: Pulling from library/nginx
afeb2bfd31c0: Pull complete 
7ff5d10493db: Pull complete 
d2562f1ae1d0: Pull complete 
Digest: sha256:aa1c5b5f864508ef5ad472c45c8d3b6ba34e5c0fb34aaea24acf4b0cee33187e
Status: Downloaded newer image for nginx:latest

3 Run Docker with nginx

Run the following command as root user.

$ docker run --name docker-nginx -p 80:80 -d nginx

–name docker-nginx : Name given to the container that is run is docker-nginx -p 80:80 : the port we are exposing and mapping from local machine port number to that of container, in the format local_machine_port:container_port -d : Detached mode – Runs the container in background

root@arjun-VPCEH26EN:/home/arjun# docker run --name docker-nginx -p 80:80 -d nginx
26676407c03db63a74b7ccf17796d034bcd2ffd909a568585f3047e2d52d091c

Now the NGINX is running in its default configuration. If you open a browser and hit the url 0.0.0.0:80, you would get following welcome page from NGINX Web Server.

4 Include a static Web Application in the Docker with NGINX

To include our static Web Application into the Docker Image with NGINX, we shall create a Dockerfile (including commands to build image) and an html file with name index.html (acting as our web application) in a directory named nginx-app.

FROM nginx
COPY . /usr/share/nginx/html
<html>
  <head>
    <title>Docker NGINX Tutorial</title>
  </head>
  <body>
	<h1>NGINX Tutorial - Brought to you by TutorialKart</h1>
	<p>Learn to Dockerize with NGINX and your web application.</p>
	<a href="https://www.tutorialkart.com/docker/docker-tutorial/">Docker Tutorial</a>
	<a href="https://www.tutorialkart.com/nginx/nginx-tutorial/">NGINX Tutorial</a>
  </body>
</html>

Run the following command in Terminal from directory – nginx-app, to create image file.

$ docker build -t nginx-application .
root@arjun-VPCEH26EN:/home/arjun/workspace/docker/nginx-app# docker build -t nginx-application .
Sending build context to Docker daemon  3.072kB
Step 1/2 : FROM nginx
 ---> da5939581ac8
Step 2/2 : COPY . /usr/share/nginx/html
 ---> ae2c0a239687
Removing intermediate container f90e669aafe9
Successfully built ae2c0a239687
Successfully tagged nginx-application:latest

Image file is created successfully.

root@arjun-VPCEH26EN:/home/arjun/workspace/docker/nginx-app# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx-application   latest              ae2c0a239687        2 minutes ago       108MB
nginx               latest              da5939581ac8        7 days ago          108MB
python              latest              26acbad26a2c        7 days ago          690MB
java                8                   d23bdf5b1b1b        8 months ago        643MB
hello-world         latest              c54a2cc56cbb        14 months ago       1.85kB

Run the following command in Terminal from directory, to run the image file in a container.

$ docker run --name docker-nginx -p 80:80 -d nginx-application

nginx-application – Docker Image file name.

root@arjun-VPCEH26EN:/home/arjun/workspace/docker/nginx-app# docker run --name docker-nginx -p 80:80 -d nginx-application
1a2ddec91961b76b73e19af28db06e658afcbe2a44e3ae01205d55f9d910922f

The container docker-nginx is running.

root@arjun-VPCEH26EN:/home/arjun/workspace/docker/nginx-app# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
1a2ddec91961        nginx-application   "nginx -g 'daemon ..."   About an hour ago   Up About an hour    0.0.0.0:80->80/tcp   docker-nginx

Hit the url 0.0.0.0:80/index.html in any of your browser.

Conclusion

In this NGINX Tutorial – Docker NGINX, we have learnt to deploy NGINX with Docker