Conteneurisation de PHP et Nginx

hamzasehouli

Hamza Sehouli

Posted on January 5, 2024

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

💖 💪 🙅 🚩
hamzasehouli
Hamza Sehouli

Posted on January 5, 2024

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related