Deploying Wordpress blog with Django using Docker Containers.

Containers run services in an isolated environment, if we deploy our applications using containers then the host system on which these containers are running will not be affected even though the applications running within containers are being hacked.

If you don’t know about how django, wordpress blog are setup using nginx then look into: https://micropyramid.com/blog/configuring-wordpress-blog-as-sub-directory-alongside-django-in-nginx/

Wordpress blog will be running on docker container, using port forwarding we will forward wordpress container’s 80 port to host 8001 port. As usual django will be running on host system on port 8000(we can also run it as container).

Further nginx will be used as proxy server to serve these applications on port 8000 and 8001.

Install Docker:

sudo wget -qO- https://get.docker.com/ | sh

or

sudo curl -sSL https://get.docker.com/ | sh

Pull Wordpress blog image:

sudo docker pull wordpress

Setup Django:

Create a virtual environment and install django, then run it on 8000 port.

apt-get update -y && apt install -y python-virtualenv
cd /home
mkdir mysite
cd mysite
virtualenv env
. env/bin/activate
pip install django
django-admin startproject mysite
cd mysite && python manage.py runserver

Run wordpress blog container and forward port 80 to host’s 8001 port:

By default the wordpress image is configured to server wordpress on port 80. Using publish, forward 8001 port of host to 80 port of wordpress container.

docker run -d --name blog --publish 8001:80 wordpress

To see running containers execute:

docker ps

Finally setup nginx to be a proxy server for django and wordpress:

Following configurations assumes:

Django site domain name: micropyramid.com
Django port: 8000

Wordpress served on: micropyramid.com/blog
Wordpress port: 8001

In /etc/nginx/sites-available/djw.conf

server {
    listen 80;
    server_name micropyramid.com;
    location / {
        proxy_pass http://127.0.0.1:8000;
    }
    location /blog {
        proxy_pass http://127.0.0.1:8001;
    }
}

Symlink configuration and Restart nginx:

ln -s /etc/nginx/sites-available/djw.conf /etc/nginx/sites-enabled/
service nginx restart

That’s it goto micropyramid.com you should see django welcome page, goto micropyramid.com/blog you should see wordpress site.

Posted On 05 May 2017 By MicroPyramid


Need any Help in your Project?Let's Talk

Latest Comments
Understand Deep Learning and how it works with a simple example

Deep Learning is a part of Machine Learning, it mimics the way our brains fundamentally work. We all know that our brain consists of billions …

Continue Reading...
Letsencrypt wildcard - Setup wildcard subdomain using letsencrypt and certbot

To get wildcard supported certificates, we need to pass the challenge which requires adding TXT records in your dns records.
To get certificates for single domains, …

Continue Reading...
Deploying Wordpress blog with Django using Docker Containers.

Containers run services in an isolated environment, if we deploy our applications using containers then the host system on which these containers are running will …

Continue Reading...
How to setup http password authentication with nginx

HTTP Authentication is used to allow access limit to a site or particular directories by validating the username and password. HTTP basic authentication can also …

Continue Reading...
Gitlab and Docker - Continuous Integration, Deployment and Continuous Delivery

In this blog post, we will learn how to setup and use gitlab container registry to implement, test build and deploy your code automatically with …

Continue Reading...

Subscribe To our news letter

Subscribe and Stay Updated about our Webinars, news and articles on Django, Python, Machine Learning, Amazon Web Services, DevOps, Salesforce, ReactJS, AngularJS, React Native.
* We don't provide your email contact details to any third parties