2/28/2018 03:09:00 pm
Deploying Python Application on Docker & Kubernetes
Overview
In this post, We’ll share the process how you can Develop and Deploy Python Application using Docker and Kubernetes and adopt DevOps in existing Python Applications.
Prerequisites are mentioned below
To follow this guide you need
- Python Application Source Code
Kubernetes is an open source platform that automates container operations, and Minikube is best for testing kubernetes in a local environment.
Kubectl is command line interface to manage kubernetes cluster either remotely or locally. To configure kubectl in your machine follow this link.
Shared Persistent Storage is permanent storage that we attach to the kubernetes container. We will be using cephfs as a persistent data store for kubernetes container applications.
Application Source Code is source code that we want to run inside a kubernetes container.
Dockerfile contains all the actions that are performed to build python application.
The Registry is an online image store for container images.
Below mentioned options are few most popular registries.
2. AWS ECR
3. Docker Store
Dockerfile
The Below mentioned code is sample docker file for Python applications. In which we are using python 2.7 development environment.
FROM python:2.7 MAINTAINER XenonStack # Creating Application Source Code Directory RUN mkdir -p /usr/src/app # Setting Home Directory for containers WORKDIR /usr/src/app # Installing python dependencies COPY requirements.txt /usr/src/app/ RUN pip install --no-cache-dir -r requirements.txt # Copying src code to Container COPY . /usr/src/app # Application Environment variables ENV APP_ENV development # Exposing Ports EXPOSE 5035 # Setting Persistent data VOLUME ["/app-data"] # Running Python Application CMD ["python", "wsgi.py"]
Building Python Docker Image
The Below mentioned command will build your application container image.
$ docker build -t <name of your python application>:<version of application> .
Publishing Container Image
To publish Python container image, we can use different private/public cloud repository like Docker Hub, AWS ECR, Google Container Registry, Private Docker Registry.
- Adding Container Registry to Docker Daemon
If you are using docker registry other than docker hub to store images, then we need to add that container registry to our local docker daemon and kubernetes Docker daemons.
Continue Reading:XenonStack/Blog