Création d’une application Django avec déploiement sur Google Cloud Platform :

ÉTAPE 2 Docker et déploiement sur GCP

Nous abordons maintenant la mise en production de l’application Django “Hello world” qui se décompose en deux grandes étapes :

Ce tutoriel nécessite les prérequis suivants :

Création du container Docker

Créer un fichier Dockerfile à la racine de votre projet (myproject). Ce fichier va décrire comment Docker doit construire votre image.

# Image Python utilisée
FROM python:3.10

# Répertoire de travail dans lequel l'application sera copiée
WORKDIR /app

# Copie et installation des librairies nécessaire
COPY requirements.txt /app/
RUN pip install --no-cache-dir -r requirements.txt

# Copie du reste de l'application
COPY . /app/

# Port sur lequel l'application fonctionnera
EXPOSE 8080

# Commande pour lancer l'application
CMD ["python", "manage.py", "runserver", "0.0.0.0:8080"]

Créer un fichier requirements.txt à la racine de votre projet contenant les dépendances de votre application.

asgiref==3.7.2
cachetools==5.3.2
certifi==2024.2.2
charset-normalizer==3.3.2
Django==5.0.2
django-cors-headers==4.3.1
django-environ==0.11.2
django-storages==1.14.2
google-api-core==2.17.1
google-api-python-client==2.118.0
google-auth==2.28.0
google-auth-httplib2==0.2.0
google-cloud-core==2.4.1
google-cloud-secret-manager==2.18.1
google-cloud-storage==2.14.0
google-crc32c==1.5.0
google-resumable-media==2.7.0
googleapis-common-protos==1.62.0
grpc-google-iam-v1==0.13.0
grpcio==1.60.1
grpcio-status==1.60.1
httplib2==0.22.0
idna==3.6
proto-plus==1.23.0
protobuf==4.25.3
psycopg2-binary==2.9.3
pyasn1==0.5.1
pyasn1-modules==0.3.0
pyparsing==3.1.1
pytz==2024.1
requests==2.31.0
rsa==4.9
schedule==1.2.1
sqlparse==0.4.4
typing_extensions==4.9.0
uritemplate==4.1.1
urllib3==2.2.1

Créer un fichier .dockerignore qui exclut les fichiers inutiles ou qu’on ne souhaite pas exposer.

__pycache__
*.pyc
*.pyo
*.pyd
.DS_Stor
cloud-sql-proxy
serservice.yaml
cloudbuild.yaml

Construire et tester l'image Docker localement

Ouvrez une console dans le répertoire de votre projet.

Construire l'image Docker en exécutant la commande suivante :

 docker build -t mydjangoapp .

Tester l’image localement avec la commande :

docker run -p 8080:8080 mydjangoapp

Visitez http://127.0.0.1:8080/myapp/hello/ pour vous assurer que l'application fonctionne correctement.

Configuration de GCP

Assurez-vous que votre compte Google Cloud Platform est correctement configuré sur votre machine locale en utilisant la commande suivante dans le terminal. Suivez les instructions :

gcloud auth login

Utilisez la commande suivante pour sélectionner le bon projet :

gcloud config set project deploy-project-django

Puis la commande suivante qui permet de mettre à jour le projet les quotas du projet :

gcloud auth application-default set-quota-project deploy-project-django

Configurez votre projet dans la console GCP en utilisant la commande suivante :

gcloud config set project deploy-project-django

Accéder maintenant à la Console Google Cloud en ouvrant votre navigateur https://console.cloud.google.com/

Accéder à Artifact Registry

  1. Cliquez sur le bouton Create Repository"Create Repository".
  1. Dans le formulaire de création de référentiel, remplissez les détails suivants :
    • Repository name: entrer le nom du dossier de dépôt deploy-project-django/mydjangoapp
    • Region: sélectionner europe-west1
  1. Cliquez sur Create pour créer le dépôt .

Configurer Docker pour se connecter à Google Artifact Registry

Avant de construire et pousser votre image Docker dans Artifact Registry, assurez-vous d'être connecté à Artifact Registry en utilisant Docker. Vous pouvez le faire en exécutant la commande suivante dans votre terminal :

gcloud auth configure-docker europe-docker.pkg.dev

Cette commande configure Docker pour utiliser les informations d'authentification de Google Cloud pour Artifact Registry en Europe de l'Ouest.

Utilisez Google Cloud Build pour créer une image Docker et la stocker dans Google Artifact Registry

Créez un fichier cloudbuild.yaml à la racine de votre projet avec le contenu suivant :

steps:
  # Construire l'image Docker
  - name: 'gcr.io/cloud-builders/docker'
    args: ['build', '-t', 'europe-west1-docker.pkg.dev/deploy-project-django/mydjangoapp/mydjangoapp', '.']

  # Pousser l'image vers le registre de conteneurs Google (Artifact Registry en Europe de l'Ouest)
  - name: 'gcr.io/cloud-builders/docker'
    args: ['push', 'europe-west1-docker.pkg.dev/deploy-project-django/mydjangoapp/mydjangoapp']

Exécutez la commande suivante pour déclencher la construction et le stockage de l'image dans GCR :

gcloud builds submit --config cloudbuild.yaml .  

Déploiement sur Cloud Run

Ouvrez la Console Google Cloud dans votre navigateur. Aller dans la section Artifact Registry. Ouvrez votre dépôt mydjangoapp puis le container docker déposé mydjangoapp. Ouvrez l’image et cliquez sur DEPLOYER/Déployer sur Cloud Run .

Modifier la région europe-west1 (Belgique)

Autoriser les appels non identifiés Oui

Nombre minimal et maximal d'instances pour la nouvelle révision : min : 1
Port du container :
8080

Cliquez sur CREER

Cloud Run attibue une url à notre application qui se retouve en ligne

Prochaine étape : Base de données PostgreSQL