On this post we are creating a Docker Container with Linux Centos 7, Apache Web Server, and mod_wsgi
for web development with Python 3.
Create a file named Dockerfile and copy the following content on the file.
FROM centos:7 # Install Apache RUN yum -y update RUN yum -y install httpd httpd-tools # Install Python 3 RUN yum -y install python3 # Install mod_wsgi RUN yum -y install mod_wsgi # Update Apache Configuration RUN sed -E -i -e '/<Directory "\/var\/www\/html">/,/<\/Directory>/s/AllowOverride None/AllowOverride All/' /etc/httpd/conf/httpd.conf RUN echo "" >> /etc/httpd/conf/httpd.conf \ && echo "WSGIScriptAlias / /var/www/html/wsgi.py" >> /etc/httpd/conf/httpd.conf \ && echo "<Directory /var/www/html>" >> /etc/httpd/conf/httpd.conf \ && echo "<Files wsgi.py>" >> /etc/httpd/conf/httpd.conf \ && echo "Require all granted" >> /etc/httpd/conf/httpd.conf \ && echo "</Files>" >> /etc/httpd/conf/httpd.conf \ && echo "</Directory>" >> /etc/httpd/conf/httpd.conf EXPOSE 80 # Start Apache CMD ["/usr/sbin/httpd","-D","FOREGROUND"]
You can download this Dockerfile, and the python script described below, as a zipped file here
Now we create the Docker Image.
docker build -t image_apache_python .
Then we create the Docker Container.
Notice that we need to indicate the path of our local folder that will be served as the root of the Apache Web Server, which in this example is /path_to/my_website. Replace it with the location of your site's root folder.
docker run -tid -p 4000:80 --name=container_apache_python -v /path_to/my_website:/var/www/html image_apache_python
Now we need to create a python script that will be run when we open our website on a browser.
Create a file named wsgi.py and copy the following content on the file.
def application(environ, start_response): start_response('200 OK', [('Content-Type','text/html')]) return [b"Hello World"]
The python script created above have to be copied into the root folder of our website.
The copy can be done in one of two ways.
1. Open a terminal window and copy the file to the local folder that you selected as the site's root folder:
copy wsgi.py /path_to/my_website
2. On the terminal window, using the Docker cp command, copy the file directly to the site's root folder on the container:
docker cp wsgi.py container_apache_python:/var/www/html/
Then we can test our site by opening the url http://localhost:4000/ on your browser.
You would see the text "Hello World" on your browser.