DEV Community

Cover image for Conteneurisation de PHP et Nginx
Hamza Sehouli
Hamza Sehouli

Posted on

Conteneurisation de PHP et Nginx

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

Top comments (2)

Collapse
 
blunket profile image
Andrew Siegman

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 !

Collapse
 
hamzasehouli profile image
Hamza Sehouli

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.