Conteneurisation de PHP et Nginx

Hamza Sehouli - Jan 5 - - Dev Community

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
Enter fullscreen mode Exit fullscreen mode

2- Ajouter une application PHP :

Créez une application PHP simple. Par exemple, dans root "./index.php" :

<?php
echo "Bonjour, je suis Hamza !";
Enter fullscreen mode Exit fullscreen mode

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;
    }
}
Enter fullscreen mode Exit fullscreen mode

4- Écrire le fichier Dockerfile :

FROM php:8.0.2-fpm

WORKDIR /var/www
Enter fullscreen mode Exit fullscreen mode

5- Créez un fichier Dockerfile-nginx pour Nginx à la racine du projet :

FROM nginx:1.19-alpine

WORKDIR /var/www
Enter fullscreen mode Exit fullscreen mode

6- Créez un fichier .dockerignore à la racine du projet :

docker-compose
Dockerfile*
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Accéder à l'application :
Ouvrez votre navigateur et allez sur http://localhost:8000. Vous devriez voir le message "Bonjeur, Je suis Hamza !".

. . . . . . .
Terabox Video Player