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 !".