Maison >développement back-end >PHP7 >Comment utiliser Docker avec PHP 7?
Cet article explique l'utilisation de Docker avec PHP 7, couvrant la création de Dockerfile, la construction d'images et l'exécution des conteneurs. Il détaille les meilleures pratiques de sécurité (utilisateur non root, mises à jour de dépendance, validation des entrées), gestion multi-services avec docker comp.
L'utilisation de Docker avec PHP 7 implique la création d'une image Docker qui contient tout ce que votre application PHP doit exécuter: PHP lui-même, un serveur Web (comme Apache ou Nginx), les extensions nécessaires et votre code d'application. Voici une ventilation du processus:
1. Créez un Dockerfile
: ce fichier contient des instructions pour construire votre image Docker. Un exemple de base utilisant Apache peut ressembler à ceci:
<code class="dockerfile">FROM php:7.4-apache # Install necessary PHP extensions RUN docker-php-ext-install pdo_mysql # Copy your application code COPY . /var/www/html # Expose the port Apache listens on EXPOSE 80</code>
Ce Dockerfile
commence par une image de base PHP 7.4 comprenant Apache. Il installe ensuite l'extension pdo_mysql
(essentielle pour l'interaction de la base de données) et copie votre code d'application dans le répertoire correct. Enfin, il expose le port 80, ce qui rend votre application accessible depuis l'extérieur du conteneur.
2. Construisez l'image Docker: accédez au répertoire contenant votre Dockerfile
et exécutez:
<code class="bash">docker build -t my-php-app .</code>
Cette commande construit l'image et la marque comme my-php-app
.
3. Exécutez le conteneur Docker: Après la construction, exécutez le conteneur:
<code class="bash">docker run -p 8080:80 -d my-php-app</code>
Cette commande exécute le conteneur en mode détaché ( -d
), mappant le port 8080 sur votre machine hôte au port 80 à l'intérieur du conteneur. Vous pouvez désormais accéder à votre application sur http://localhost:8080
. N'oubliez pas de remplacer 8080
par votre port préféré si nécessaire. Vous devrez peut-être ajuster cela en fonction de votre configuration spécifique (par exemple, en utilisant Nginx au lieu d'Apache).
La sécurisation d'une application PHP 7 dans Docker implique une approche multicouche:
Dockerfile
doit créer et passer à un utilisateur non racinaire.Oui, Docker Compose est idéal pour gérer plusieurs services dans une seule application. Par exemple, vous pouvez avoir des conteneurs séparés pour votre application PHP, une base de données (comme MySQL ou PostgreSQL), une file d'attente de messages (comme RabbitMQ) et un cache Redis.
Un fichier docker-compose.yml
définirait chaque service:
<code class="yaml">version: "3.9" services: web: build: ./web ports: - "8080:80" depends_on: - db db: image: mysql:8 environment: MYSQL_ROOT_PASSWORD: my-secret-password MYSQL_DATABASE: mydatabase MYSQL_USER: myuser MYSQL_PASSWORD: mypassword</code>
Cet exemple montre un service web
(votre application PHP) et un service db
(MySQL). La directive depends_on
garantit que la base de données commence avant l'application Web. Vous auriez Dockerfile
S séparé pour chaque service. Docker Compose simplifie la gestion de ces services interconnectés, garantissant qu'ils sont démarrés, arrêtés et mis à l'échelle ensemble.
Le dépannage des applications PHP 7 dans Docker implique souvent de vérifier plusieurs domaines:
docker logs <container_id></container_id>
pour afficher les journaux.docker ps
pour vérifier si le conteneur est en cours d'exécution et docker inspect <container_id></container_id>
pour obtenir des informations plus détaillées sur l'état et la configuration du conteneur.Dockerfile
installe correctement les extensions nécessaires, définit le répertoire de travail correct et copie tous les fichiers requis.docker network inspect bridge
(ou le nom de votre réseau) pour vérifier la connectivité.Dockerfile
, reconstruisez l'image pour refléter ces modifications.N'oubliez pas de consulter la documentation officielle Docker et PHP pour des informations de dépannage plus détaillées. L'adaptation de ces étapes vers vos messages de configuration et d'erreur spécifiques vous aidera à résoudre efficacement les problèmes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!