Docker est une plate-forme de conteneurisation permettant de regrouper votre code, vos dépendances et votre environnement d'exécution en unités autonomes qui s'exécutent de manière identique dans différents environnements.
Dockeriser une application PHP simplifie le déploiement en regroupant le runtime PHP, un serveur Web, ainsi que votre code source et vos dépendances de compositeur dans un conteneur. Démarrer avec Docker est simple. Cependant, vous devez éviter quelques pièges avant de pouvoir l’utiliser en toute sécurité en production. Choisir une image de base appropriée, sélectionner le runtime PHP adapté à votre charge de travail et renforcer la sécurité de votre image sont tous essentiels pour éviter les problèmes. Dans ce didacticiel, vous apprendrez à écrire un Dockerfile fiable pour les applications PHP.
Si vous lisez ceci, vous avez probablement écrit votre application PHP et vous souhaitez maintenant la Dockeriser pour le déploiement. Voici dix bonnes pratiques qui optimisent les performances, la sécurité, la fiabilité et la facilité de développement :
PHP publie une image Docker officielle pour toutes les versions linguistiques prises en charge. Plusieurs variantes d'image sont disponibles, couvrant une matrice de systèmes d'exploitation de base, de versions de langage et d'intégrations de serveur Web (telles qu'Apache ou FastCGI Process Manager (FPM)).
Il est important de sélectionner l'image spécifique qui correspond le mieux à vos besoins. Évitez d'utiliser des balises génériques, telles quephp:dernier, car ceux-ci vous exposeront à des modifications potentiellement indésirables et révolutionnaires et à des bibliothèques inutiles requises uniquement pour un système d'exploitation à part entière. Par exemple, lephp:apacheimage inclut actuellement PHP 8.2, mais elle passera immédiatement à PHP 9.0 dès la sortie de cette version. Sélectionphp:8.2-apachegarantit que votre image exécutera toujours PHP 8.2, même si ce n'est plus le canal actuel :
DEPUIS php:8.2-apache WORKDIR /var/www/html COPIER index.php .Le même principe s'applique à toutes les autres images dont vous pouvez dépendre, comme composer pour l'installation des dépendances. Sélectionnez la balise d'image qui correspond à la version principale du compositeur que vous utilisez sur votre ordinateur :compositeur:2au lieu decompositeur:dernier.
Les conteneurs Docker sont conçus pour être apatrides. Il est préférable de configurer votre application à l'aide de variables d'environnement que vous définissez au démarrage du conteneur. C'est plus avantageux que de s'appuyer sur un fichier de configuration, ce qui vous obligerait à toujours configurer un stockage de conteneur persistant à l'aide d'un volume Docker.
Les variables d'environnement sont définies avec le-eindicateur lorsque vous démarrez un conteneur en utilisantexécution du docker:
$ docker run -d -e DATABASE_HOST=172.26.0.2 php-app:latestVotre code PHP peut récupérer la valeur de la variable en appelant la fonction getenv() :
// 172.26.0.2 echo getenv("DATABASE_HOST");Ces variables sont des variables d'exécution définies sur des conteneurs individuels. Parfois, vous souhaiterez peut-être définir une variable dans votre Dockerfile afin qu'elle soit automatiquement fournie aux conteneurs. Pour y parvenir, utilisez leENVinstruct...
[Courte citation de 8% de l'article original]