Déployer une application Symfony sur Koyeb

Guillaume Loulier
5 min readSep 13, 2021

--

Dans ce guide, nous verrons comment déployer une application Symfony sur Koyeb, une plateforme d’hébergement et de déploiement typé serverless, cette dernière proposant toute une série de fonctionnalités comme le TLS automatique, la mise à l’échelle et bien d’autres.

Koyeb n’étant pas encore disponible publiquement, n’hésitez pas à demander l’accès à l’équipe en vous inscrivant sur la plateforme.

Sommaire

Pré-requis

Etapes

Créer l’application Symfony

Pour commencer simplement, commençons par créer une application Symfony via la CLI:

symfony create — full sf_koyeb

Une fois l’application créée, lançons-la en local pour vérifier que tout fonctionne:

symfony serve

En ouvrant le navigateur sur http://127.0.0.1:8000, la page suivante devrait s’afficher:

Préparer l’environnement Docker

Docker reste à ce jour l’approche la plus simple pour déployer des applications PHP sur Koyeb (Buildpack pourrait faire son arrivée plus tard), pour simplifier le processus, j’utiliserais une image contenant PHP et Nginx:

Pour préparer l’image:

docker build -f .cloud/docker/Dockerfile . -t __tag__

Une fois l’image créée, lançons-la localement afin de voir si tout fonctionne correctement:

docker run -p 80:80 __tag__

Pour simplifier le test, l’environnement est resté en dev mais une fois prêt pour le déploiement, l’environnement prod est à préférer (je reviendrais sur cet usage dans un autre article).

Stocker l’image

Pour pouvoir utiliser l’image sur Koyeb, nous devons la stocker sur un registry, pour ce faire, j’utilise le Hub Docker afin de simplifier le processus:

docker push __tag__

Maintenant que l’image est publiée, voyons comment l’utiliser sur Koyeb afin de rendre public notre application.

L’image utilisée ici pour l’exemple est disponible sur le hub Docker

Déployer

Afin de ne pas embrouiller ce tutoriel, j’utiliserais le dashboard en ligne, la CLI est bien entendu disponible si besoin.

Le dashboard est accessible en visitant:

https://app.koyeb.com/auth/signin

Une fois connecté, voici la page d’accueil

En cliquant sur Deploy my first app, vous devriez arriver sur l’interface suivante:

Information importante: Le déploiement via Github n’est pas encore disponible au moment de l’écriture de ce tutoriel, comme cité plus haut, il devrait faire son arrivée prochainement (notamment via Buildpack pour éviter de devoir soumettre une image Docker).

Pour ce tutoriel, j’utiliserais l’instance de type Nano, une application Symfony ne demande pas de grosses ressources et même en production, il vaut mieux viser la plus petite instance et s’adapter à la charge (simple avis personnel ici, chaque projet nécessite une infrastructure adaptée).

Le point important ici est l’usage de Docker, précision importante (un énorme merci à Edouard de l’équipe Koyeb pour m’avoir aidé sur ce point 🙏), le nom de l’image ne doit comporter AUCUN espace, faites bien attention si vous copiez le nom depuis le Hub Docker.

Le second point concerne l’usage de Docker Hub, par défaut, ce dernier est considéré comme un registry public, si vous avez besoin de récupérer une image privée, il faudra soumettre votre username ainsi que le token d’API (disponible sur votre compte Docker Hub), ici, je définis l’image comme publique pour éviter cette étape.

Pour les informations qui suivent:

La région PAR (Paris) est la seule disponible à l’écriture de cet article donc je ne peux pas juger des autres, sur l’option du nombre d’instance, une seule instance semble suffisante (à noter que l’option peut être changée n’importe quand), sur le port, par défaut, l’image utilisée expose le port 80 donc la modification est à effectuer selon vos besoins.

Reste à choisir un nom, ici, j’utilise 3 lettres (la contrainte minimale) afin de simplifier le tri, une fois les options soumises, voyons si le service se lance:

Bien, le tout semble se dérouler au mieux, voyons les informations liées à ce service via sa page dédiée (disponible au clic sur son nom):

Par défaut, Koyeb va exposer votre service via un combo domaine / URL maison (les domaines personnalisés sont déjà sur la roadmap au moment de l’écriture de cet article), vous pouvez aussi obtenir les informations clés tel que l’instance, l’état du service et les derniers déploiements.

Pour finaliser ce tutoriel, cliquons sur l’URL publique et voyons si l’application répond:

Bien, tout semble se passer au mieux, à noter que n’ayant pas défini de route pour l’accueil, la page par défaut de Symfony répond mais votre application devrait renvoyer le tout correctement.

Ce tutoriel arrive à son terme, pour simplifier le processus, je n’ai volontairement pas fait mention de la base de données, des artefacts front ou des services tiers, je reviendrais sur ces cas d’usages dans des articles dédiés prochainement.

Si vous souhaitez en savoir plus sur Koyeb, la documentation ainsi que le site officiel sont vos prochaines destinations, merci encore pour la lecture et très bonne journée à tous 👋

--

--

Guillaume Loulier
Guillaume Loulier

Written by Guillaume Loulier

PHP developer @SensioLabs, Symfony addict (3, 4, 5 & 6 certified!)