Configure Web Server and Python Interpreter using Container — Docker
What is Docker?
Docker is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly. With Docker, you can manage your infrastructure in the same ways you manage your applications. By taking advantage of Docker’s methodologies for shipping, testing, and deploying code quickly, you can significantly reduce the delay between writing code and running it in production.
In this task, I am going to explain you the basic functionality of docker container and setting up a Web server on Docker.
Tasks:
- Configure WebServer on the top of Docker Container
- Setting up Python Interpreter and running Python Code on Docker Container
My Docker Host is set up on Ubuntu 20.04
Task 1:
For this task, I am setting up an Apache HTTP Web Server on top of the docker Container.
For this, I am using a Centos Image.
- Starting the Docker Container :
docker run -it — name WebServer centos:latest
The above command will start the docker container named WebServer for you
Note: The docker run command would internally check with the docker daemon service if the centos image is present , if not the docker pull command is run, and the image is downloaded.
breaking down the options:
[ — name ] — This option is used for assigning a name to the container.
[ -it ] — This option gives an interactive terminal to our container to run any command.
You can confirm if the container is running using the following command.
docker ps
Note: If you want to see all the containers (whether running / stopped), you can view it through the following command.
docker ps -a
Now the basic steps to install and setup any web server are as follows:
- Install the webserver : We can use yum to install the web server
- Configure the WebServer: After you have installed the webserver, now you can configure it by going to this directory.
/var/www/html
Here you can add your respective HTML files that required to set up based on business requirement. - Run the Webserver
Installing the Webserver :
yum install httpd
2. Configuring the Web Server:
3. Running the Web Server
Normally we use systemctl / service command to start any service.
But docker does not support this,
Hence we directly have to execute the file here.
/usr/sbin/httpd
This will start the service and creates a respective pid file in the var/run/httpd directory.
You can confirm if the server is running using the following command.
netstat -tnlp
The result is
Note: But there is a small disadvantage to this , if we stop the container the process stops, and after you restart the container, the server does not start on its own.
The following error comes in
port 80: Connection refused
This is because the server is stopped since docker container was stopped,
We can make use of a file like .bashrc to make the server start whenever the container starts.
The use of .bashrc file is due to the fact that it gets executed when you open the bash shell/terminal
Due to this we can place the commands in this file, so that they get executed when the container starts
rm -rf /var/run/httpd/*
This is done to remove/clear cache data present in the directory from the previous session and as well as remove the .pid file which lets the OS assume that the process (httpd server) is running.
Now you can restart your docker container.
As you can see the httpd server has started and the port 80 is open
And the Web page is displayed.
Now if you want to create a copy of this container, and make an image out of it we can use docker commit.
docker commit <container_name> <image_name:tag>
And a new image is created for you , which you can make use of for future purposes.
Note: Make sure that the container is in stopped state before you do a docker commit and make an image out of it.
Task 2:
- Setting up Python Interpreter and running Python Code on Docker Container
for this I created another container from centos base os image
docker run -it — name Python3 centos
and you can install python3 using
yum install python3
The python3 interpreter is now setup.
Thanks for reading :)
You can connect with me on Linkedin here , if you have any suggestions.