Skip to content

akkaoui-abdou/python-fastapi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Docker Tutorial For Beginners - How To Containerize Python Applications

Create a simple project python API with action :

  • Create folder python-fastapi
  • Create virtual environment python
  • Generate file requierements.txt
  • Create file Dockerfile
  • Install requirements tools
  • build image docker

tree folder project

├── app
│   └── main.py
├── Dockerfile
├── README.md
└── requirements.txt

Create folder python-fastapi

mkdir python-fastapi

Create folder app for application

mkdir app

Create virtual environment python

python3 -m venv venv

source venv/bin/activate

Generate file requirements.txt

pip freeze > requirements.txt

Create file main.py for source code application

touch main.py
from typing import Union

from fastapi import FastAPI

import uvicorn

app = FastAPI()


@app.get("/")
def read_root():
   return ("Salut tout le monde")

@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
    return {"item_id": item_id, "q": q}


if __name__ == "__main__":
    uvicorn.run(app, port=8000, host="0.0.0.0")

Create file Dockerfile

touch Dockerfile
   FROM python:3.10

   WORKDIR /fastapi-app

   COPY requirements.txt .

   RUN pip install -r requirements.txt

   COPY ./app ./app

   CMD [ "python3", "./app/main.py" ]

build image docker

docker build -t fastapi-app .

Running with Docker

docker run -p 8000:8000 fastapi-app

interaction with container

docker exec -it id_contanier /bin/sh

Deployer this app with Google Kubernetes Engine: Create GKE Cluster

export PROJECT_ID=kubernetes-366320
git clone https://github.com/akkaoui-abdou/python-fastapi.git
docker build -t us.gcr.io/${PROJECT_ID}/fastapi-app:v1 .
docker push us.gcr.io/${PROJECT_ID}/fastapi-app:v1
gcloud services enable containerregistry.googleapis.com
gcloud auth configure-docker

Create cluster:

gcloud config set compute/zone us-central1-a
gcloud container clusters create fastapi-cluster --num-nodes=1
gcloud container clusters get-credentials fastapi-cluster

Deployment application:

kubectl create deployment fastapi-app --image=us.gcr.io/${PROJECT_ID}/fastapi-app:v1 
kubectl expose deployment fastapi-app --type LoadBalancer --port 8000 --target-port 8000
kubectl get service

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published