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 :
- La création du container Docker qui va contenir l’application et son envoi sur GCP Artifact Registry
- La mise en production ou déploiement du container sur GCP Cloud Run
Ce tutoriel nécessite les prérequis suivants :
- Savoir utiliser le terminal et avoir un outil de gestion d’environnement virtuel (pyenv dans ce tutoriel)
- Avoir des bases de développement en Python
- Avoir Docker et Goggle gcloud CLI d’installer sur sa machine
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
- Cliquez sur le bouton
Create Repository
"Create Repository".
- 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ôtdeploy-project-django/mydjangoapp
Region
: sélectionnereurope-west1
- 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