La conteneurisation de PHP et Nginx implique la création de conteneurs Docker pour chaque service et leur configuration pour qu'ils fonctionnent ensemble. Vous trouverez ci-dessous les étapes pour créer une configuration Docker de base pour PHP et Nginx. Cet exemple est réalisé à partir d'une application PHP simple.
1- Créer la structure du projet :
Commencez par créer un projet avec la structure suivante :
//projet
├── index.php
├── nginx
│ └── nginx.conf
├── Dockerfile
├── Dockerfile-nginx
└── docker-compose.yml
2- Ajouter une application PHP :
Créez une application PHP simple. Par exemple, dans root "./index.php" :
<?php
echo "Bonjour, je suis Hamza !";
3- Configuration de Nginx :
Créez un fichier de configuration Nginx dans nginx/nginx.conf :
server {
listen 80;
index index.php;
server_name localhost;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
error_page 404 /index.php;
root /var/www;
client_max_body_size 20m;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
gzip_static on;
}
}
4- Écrire le fichier Dockerfile :
FROM php:8.0.2-fpm
WORKDIR /var/www
5- Créez un fichier Dockerfile-nginx pour Nginx à la racine du projet :
FROM nginx:1.19-alpine
WORKDIR /var/www
6- Créez un fichier .dockerignore à la racine du projet :
docker-compose
Dockerfile*
7- Écrire le fichier Docker Compose :
Créer un fichier docker-compose.yml à la racine du projet :
version: "3"
services:
app:
container_name: app-container
build:
context: ./
dockerfile: ./Dockerfile
working_dir: /var/www/
restart: always
volumes:
- ./:/var/www
networks:
- app-network
nginx:
container_name: nginx-container
build:
context: ./
dockerfile: ./Dockerfile-nginx
restart: always
ports:
- "8000:80"
volumes:
- ./nginx:/etc/nginx/conf.d
- ./:/var/www
depends_on:
- app
networks:
- app-network
networks:
app-network:
driver: bridge
Nous créons un réseau app-network, car nous conteneurisons PHP et Nginx séparément avec le même réseau, du fait que les conteneurs ont un réseau isolé de notre système local.
8- Build et exécuter des conteneurs :
docker-compose up --build
Accéder à l'application :
Ouvrez votre navigateur et allez sur http://localhost:8000. Vous devriez voir le message "Bonjeur, Je suis Hamza !".
Top comments (2)
Merci d'avoir partagé ! J'ai jamais configuré Docker tout seul, mais vous avez donner l'impression que c'est facile. Peut-être je vais essayer enfin, et peut-être je peux comprendre comment configurer un conteneur de MySQL aussi !
Il n'est pas prêt pour la production, vous devez encore configurer nginx pour des cas d'utilisation avancés. Ce n'est que pour les tests, ou si vous voulez juste vous salir les mains avec PHP et que vous voulez essayer différentes versions de PHP séparément de votre machine.