CakePHP 3 a eu raison de mon cœur de Docker

⏲️ ~5 min de lecture

Publié le par Hadrien
cakephp cakephp3 docker tuto tutoriel

Alors je sais, il y a du buzzword et du jeu de mot dans mon titre, ça c'est Clerc.

coeur-de-docker

Previously, on Occitech: après avoir mis en place nos premiers conteneurs Docker basés sur un exemple très simple, les Bisounours, armés jusqu'aux dents, étaient prêts au combat en vue d'une véritable démonstration applicative avec Docker.

Et bien chose promise, chose due,  cette semaine, nous allons mettre en place une architecture Docker pour y faire tourner un CakePHP 3. Pour parvenir à nos fins, nous allons cette fois-ci nous épargner les Dockerfiles, les fastidieuses lignes de commande et tirer parti du dépôt d'images Docker et de Fig afin de simplifier le processus.

Fig #

logo de Fig

Parlons d'abord de Fig et faisons un peu d'histoire :

Un utilitaire pour Docker assez efficace pour taper à ce point dans l'œil de dotCloud ? Ça doit valoir le coup de s'y intéresser non ? Et bien oui, et plutôt deux fois qu'une !

La force de Fig, c'est qu'il vous permet de déclarer toute une architecture Docker de manière simple et concise dans un fichier de configuration en YAML. Et ça permet de gagner un temps fou.

Pour en savoir plus et l'installer, je vous renvoie vers le site de Fig.

Cette sensation s'appelle Cake ! #

Le but du jeu est simple : il faut lancer notre application avec Docker, le tout basé sur l'architecture suivante :

L'architecture Docker de notre application L'architecture Docker de notre application

La première étape est de créer une application CakePHP. Rien de plus simple avec composer :

$ composer create-project -s dev cakephp/app docker-cakephp; cd docker-cakephp

Une fois que c'est fait, on ajoute notre fichier de configuration Fig à la racine de notre application, fig.yml

nginx:
  image: occitech/cakephp:nginx
  ports:
    - 80
  links:
    - fpm
  volumes:
    - ".:/usr/share/nginx/html"

fpm:
  image: occitech/cakephp:5.6-fpm
  links:
    - db
  volumes:
    - ".:/var/www/html"

db:
  image: mysql
  environment:
    MYSQL_ROOT_PASSWORD: "root"
    MYSQL_DATABASE: "cakephp"

Que trouve-t-on dans ce fichier ?

Maintenant il faut modifier un peu la configuration de notre application CakePHP pour qu'elle puisse se connecter à la base de données. Cherchez donc la définition des Datasources dans config/app.php et définissez les valeurs suivantes :

'host' => 'db',
'username' => 'root',
'password' => env('DB_ENV_MYSQL_ROOT_PASSWORD'),
'database' => env('DB_ENV_MYSQL_DATABASE'),

D'où viennent ces valeurs ? Pour les variables d'environnement, on connait, on a vu ça au cours de notre premier article sur Docker. Le host mis à 'db' en revanche, c'est nouveau. Quand on lie un conteneur à un autre conteneur, Docker va rajouter l'alias du premier dans le fichier /etc/hosts du second. Ainsi, comme on a lié le conteneur db au conteneur fpm, fpm connait donc un nom d'hôte db qui pointe sur l'IP du conteneur db.

Ensuite… ensuite c'est tout. Nous ne sommes qu'à une commande d'avoir CakePHP qui tourne avec Docker. Si vous regardez bien notre configuration Fig, vous verrez que l'architecture présentée plus haut est respectée, et je vous laisse imaginer le temps gagné à avoir décrit ça dans un fichier YAML plutôt que d'avoir tout fait à la main comme ce qu'on avait vu dans le précédent tutoriel.

Voila maintenant la dernière commande avant la consécration :

$ fig up -d

Cette commande démarre vos services en mode détaché. Et ça y est vous avez CakePHP 3 qui tourne ! Vous voulez le voir ? Pas de problème, une autre commande Fig permet de voir l'état des services (haha je vous ai bien eu avec le coup de la "toute dernière commande") :

$ fig ps
Name Command State Ports #

dockercakephp_db_1 /entrypoint.sh mysqld --da ... Up 3306/tcp
dockercakephp_fpm_1 php-fpm Up 9000/tcp
dockercakephp_nginx_1 nginx -g daemon off; Up 443/tcp, 0.0.0.0:49166->80/tcp

Je me rends donc à l'URL http://localhost:49166 et…

La page par défaut de CakePHP 3 La page par défaut de CakePHP 3

CakePHP 3 est prêt à prendre du service.

Ce tutoriel est donc maintenant terminé et on espère qu'on vous aura donné envie d'essayer à la fois Docker et CakePHP 3.


N.D.A. : Si Docker vous intéresse, que vous voulez vous y mettre ou juste en parler et que vous êtes en région Toulousaine, invitez-moi chez vous !

Cet article vous a plu ? Sachez que nous recrutons !

← Accueil