Skip to main content

Create & Dockerize a Flask app with Redis

 Create & Dockerize a Flask app with Redis






For this project we would create everything from scratch.

Section 1 : We would create the Flask app
Section 2 : We would deploy the app as service, along with redis using docker and docker-compose.

Section 1

Creating a flask app that returns the count number of times the page was visited.

Create a requirements.txt file, and paste the following dependency name
Flask
redis


Import dependencies using
pip install --no-cache-dir -r requirements.txt


Create a app.py file 
from flask import Flask
from redis import Redis
app = Flask(__name__)
redis = Redis(host='db_service', port=6379)
@app.route('/')
def hello():
    visit_count = redis.incr('visit_count')
    return f"Hello, this page has been visited {visit_count} times."
if __name__ == '__main__':
    app.run(host='0.0.0.0')


We can test the app locally for this we need to:

Install virtualenv if it's not already installed:
sudo apt-get update
sudo apt-get install python3-venv

Create a new virtual environment:
python3 -m venv myenv

Activate the virtual environment:
source myenv/bin/activate

Install Flask and Redis within the virtual environment:
pip install Flask redis

Run the Flask application within the virtual environment:
python3 app.py


Section 2

For Section 2, Let's visit one previous project Build Flask Image using docker & docker-compose


You can also follow the github project DockerizeFlaskVisitCounter



---THANK YOU---

Comments

Popular posts from this blog

Kubernetes2

  Challenge 2 ConfigMaps: Step-1: To create a ConfigMap named 'fresco-config' with the key-value pair SERVER_URL= https://www.fresco.me , use the following command: kubectl create configmap fresco-config --from-literal=SERVER_URL=https://www.fresco.me To verify if the ConfigMap is created, use the following command: kubectl get configmap fresco-config Step-2: To create an nginx pod with the environmental variable SERVER_URL_ENV using the ConfigMap created earlier, use the following YAML template: apiVersion: v1 kind: Pod metadata: name: fresco-nginx-pod spec: containers: - name: fresco-nginx-container image: nginx env: - name: SERVER_URL_ENV valueFrom: configMapKeyRef: name: fresco-config key: SERVER_URL Deploy the above file you can name it deployment.yaml and use the command: kubectl apply -f deployment.yaml To test your configuration by executing the following command: ...

Kubernetes1

  Challenge 1 Welcome to the Kubernetes challenge, your task is to follow the below steps and complete them successfully. Environment Setup Check whether docker & minikube are properly installed and configured. Start Minikube and execute this command to sync host docker with minikube docker minikube -p minikube docker-env and eval $(minikube docker-env) Step-1 Create a pod object using kubectl run command with google's sample image: gcr.io/google-samples/kubernetes-bootcamp:v1 and expose it on port 8080, name the pod as firstapp. Check if the pod creation is successful by running the command: kubectl get pod firstapp Step-2 Expose the application to the local VM by creating a Service object of type NodePort. Check if the service is created by running the command: kubectl get svc firstapp Step-3 Create another deployment using a 'YAML' file, create a deployment.yaml file that contains information of the number of replicas and the images to be ...

Docker + Kubernetes + Ansible

  Docker + Kubernetes + Ansible ----------------------------------------------------------------------------------------------------------------------------- Web Application Deployment using Kubernetes and Ansible A Flask application named "application.py" is given in the path Run the given setup.sh file given in the path to install the required dependencies be the challenge. 1. Start Minikube and sync host Docker with Minikube Docker. Note: If you get any errors while starting Minikube, please do try again by running the command to start Minikube. 2. Create a Dockerfile in the path and dockerize the given 'Flask' application as 'webapp-img' using 'python:alpine3.7' as its base image. 3. Create a 'deployment.yml' file in the path to create a Kubernetes deployment object named "web-deployment" with 3 replicas which uses the 'webapp-img' and runs a container named "webapp-container". Add Label "app=webapp" an...