Configurare PHP-FPM con nginx in Docker usando Docker Compose

Se vuoi configurare un ambiente di sviluppo con PHP-FPM e nginx utilizzando Docker e Docker Compose, segui questa guida passo dopo passo.

1. Creazione della struttura del progetto

Per prima cosa, organizziamo i file in una struttura chiara:

my_project/
├── docker-compose.yml
├── nginx/
│   └── default.conf
├── php/
│   ├── Dockerfile
│   └── index.php

2. Scrivere il Dockerfile per PHP-FPM

Nel file php/Dockerfile, definisci il container PHP-FPM:

FROM php:8.2-fpm
WORKDIR /var/www/html
COPY . /var/www/html

3. Configurazione di Nginx

Nel file nginx/default.conf, configura nginx per comunicare con PHP-FPM:

server {
    listen 80;
    server_name localhost;
    root /var/www/html;

    index index.php index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

4. Creare il file Docker Compose

Nel file docker-compose.yml, definisci i servizi:



services:
  php:
    build: ./php
    volumes:
      - ./php:/var/www/html

  nginx:
    image: nginx:latest
    ports:
      - "8080:80"
    volumes:
      - ./php:/var/www/html
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php

5. Creare un file PHP di test

Nel file php/index.php, aggiungi un semplice script:

<?php
phpinfo();
?>

6. Avviare i container

Ora puoi avviare i servizi con:

docker compose up -d

Apri il browser e visita http://localhost:8080 per verificare che tutto funzioni.

Conclusione

Ora hai un ambiente PHP-FPM con nginx funzionante in Docker. Questo setup è ideale per lo sviluppo e può essere facilmente esteso per l'uso in produzione.

Torna su