Deploying app in containers as microservices has its own pro's and cons. For a good understanding of the role of Containers in MicroServices, Read this article. In this blog post we will look into deploying a sample Django app into a docker container.
Creating Sample Django project.
sudo apt-get install python-dev python-pip python-virtualenv mkdir /webapps && cd /webapps virtualenv env source /webapps/env/bin/activate pip install django django-admin.py startproject testapp
now that you have a sample django project, copy /webapps/testapp to a folder called web where we will build Docker APP. the folder structure should be
`-- <some-folder> |-- Dockerfile |-- web `--scripts |-- testapp |-- confs
You can prehandedly prepare a docker image that contains all your system apt/yum requirements or write a script that can install it on runtime and save it in scripts folder.
Prepare a <project-home>/scripts/project_setup.sh and give it execution permission and include your confs files like gunicorn, uwsgi, supervisor,nginx files. Build a shell script that does the rest of processing for you.
FROM ubuntu:latest ENV APP_NAME=testapp ENV DJANGO_SOURCE=web ENV PROJECT_HOME=/webapps/$APP_NAME RUN mkdir -p $PROJECT_HOME COPY $DJANGO_SOURCE $PROJECT_HOME RUN $PROJECT_HOME/scripts/project_setup.sh ENTRYPOINT ["/<some-script that starts required services>"]
Build a Docker Image with below command:
docker build -t <image-name> .
Now Deploy your app with standard DOcker run command.
Docker run -d <image-name>