Procédures de déploiement
Une fois nos versions d’application exécutées, nous devrons déployer l’application pour pouvoir la voir en ligne.
Déploiement manuel
Pour déployer notre image Docker depuis notre machine de développement, nous devons avoir :
Lu le chapitre Heroku
Suivez les étapes pour déploiement :
Tout d’abord, vous devrez créer l’application dans Heroku, en utilisant le site Web Heroku. Pour créer une application rendez-vous sur le Dashboard, cliquez sur New et Create new app.
Après cela, vous devrez vous connecter à Heroku depuis votre terminal ou cmd avec la commande suivante :
heroku login
Après avoir exécuté cette commande, un navigateur s’ouvrira et vous amènera au site Web Heroku pour vous authentifier. Une fois que vous avez terminé, vous serez de retour sur votre terminal, connecté.
Ensuite, vous devrez vous connecter au registre de conteneurs Heroku :
heroku container:login
Aucune information d’identification ne sera demandée pour le moment.
Configurez les variables d’environnements suivant dans le site Heroku dans la partie Settings allez dans Config Vars :
SECRET_KEY
SENTRY_DSN
DEBUG
ALLOWED-HOSTS
Maintenant, pour créer notre image Docker et la transmettre à Heroku, exécutez :
heroku container:push -a <heroku-app-name> web
Vous devez disposer du Dockerfile à la racine du projet pour pouvoir créer l’image.
Enfin, lorsque l’image a été poussée avec succès, vous devez faire la release :
heroku container:release -a <heroku-app-name> web
Livraison continue (CD)
Pour automatiser le pipeline de déploiement ci-dessus, pour lancer une nouvelle version de notre application à chaque fois qu’une validation est effectuée dans la branche principale. Vous devez créer un nouveau job dans la configuration CircleCI. Voir la partie deploy dans CircleCI config.
Ce que font les commandes du job sur l’image de construction Docker CircleCI est :
Installer Heroku CLI sur la machine de construction :
sudo curl https://cli-assets.heroku.com/install.sh | sh
Se connecter au registre Heroku en passant notre clé API Heroku comme paramètre pour ne pas avoir besoin de vous authentifier avec la commande de connexion Heroku. (Contourner la connexion au navigateur) :
HEROKU_API_KEY=${HEROKU_API_KEY} heroku container:login
Transmettre les valeurs des variables d’environnement ou vous pouvez faire comme dans l’explication ci-dessus :
HEROKU_API_KEY=${HEROKU_API_KEY} heroku config:set SECRET_KEY=$SECRET_KEY -a $HEROKU_APP_NAME
HEROKU_API_KEY=${HEROKU_API_KEY} heroku config:set SENTRY_DSN=$SENTRY_DSN -a $HEROKU_APP_NAME
HEROKU_API_KEY=${HEROKU_API_KEY} heroku config:set DEBUG=$DEBUG -a $HEROKU_APP_NAME
HEROKU_API_KEY=${HEROKU_API_KEY} heroku config:set ALLOWED-HOSTS=$ALLOWED-HOSTS -a $HEROKU_APP_NAME
Construire et transférer notre image Docker vers le registre Heroku :
HEROKU_API_KEY=${HEROKU_API_KEY} heroku container:push -a $HEROKU_APP_NAME web
Sortie de la nouvelle version de notre application :
HEROKU_API_KEY=${HEROKU_API_KEY} heroku container:release -a $HEROKU_APP_NAME web
Note
Le jeton Heroku, HEROKU_API_KEY, est disponible dans les paramètres du compte avec le nom Heroku API Key. Il ne faut pas oublier d’ajouter cette variable dans les variables d’environnement CircleCI (voir comment faire sur la partie Définir les variables d’environnement de la documentation CircleCI )..
L’application publiée sera disponible à partir du tableau de bord Heroku en cliquant sur le bouton « Open app ». Exemple :