Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

Repository files navigation

PHP-FPM + Nginx migliorato

Immagine Docker Alpine con Nginx + PHP-FPM gestiti da Supervisor. Ottimizzata per applicazioni web che richiedono molte estensioni PHP (Imagick, XSL, mysqli, ecc.) senza pesare sull'immagine finale.

Cosa include

  • Nginx come web server
  • PHP-FPM come process manager PHP (modello FastCGI)
  • Supervisor per mantenere entrambi attivi
  • Estensioni PHP abilitate: calendar, ctype, dom, exif, fileinfo, filter, ftp, gettext, mysqli, pdo_mysql, shmop, sockets, sysvmsg, sysvsem, sysvshm, xsl, opcache, curl, imagick

Struttura

File Ruolo
Dockerfile Build dell'immagine
nginx.conf Configurazione server Nginx
supervisord.conf Gestione dei processi Nginx e PHP-FPM

Build manuale dell'immagine

Dalla root del repository:

docker build -t nginx-fpm .

Puoi specificare un nome/tag diverso:

docker build -t mio-nome/nginx-fpm:v1 .

Se usi un'architettura diversa da quella host (es. ARM su Intel):

docker build --platform linux/amd64 -t nginx-fpm .

L'immagine base php:8.1-fpm-alpine viene scaricata automaticamente dal registry se non è già presente localmente.

Usare l'immagine prebuild da GitHub

L'immagine viene compilata automaticamente su GitHub Actions ad ogni push su main o tag v* e pubblicata su GitHub Container Registry con due tag separati:

Tag Architettura
ghcr.io/redenfire/php81-nginx:latest amd64 (x86_64)
ghcr.io/redenfire/php81-nginx:arm arm64

Pull per architettura amd64:

docker pull ghcr.io/redenfire/php81-nginx:latest

Pull per architettura arm64 (es. Raspberry Pi, Apple Silicon):

docker pull ghcr.io/redenfire/php81-nginx:arm

Per una versione con tag specifico (es. v1):

docker pull ghcr.io/redenfire/php81-nginx:v1      # amd64
docker pull ghcr.io/redenfire/php81-nginx:arm-v1  # arm64

Se il package non è pubblico, devi prima fare login con docker login ghcr.io -u NOME_UTENTE --password-stdin. L'immagine :latest è solo amd64: su ARM va usata :arm.

Esecuzione

Dopo la build avvia il container:

docker run -d --name nginx-fpm -p 8080:80 nginx-fpm

Il container espone la porta 80. Con questo esempio accedi su http://localhost:8080.

Il documento root è /var/www/html. Per montare il tuo codice dal host:

docker run -d --name nginx-fpm -p 8080:80 -v /path/del/tuo/codice:/var/www/html nginx-fpm

Verifica

Senza codice montato la home restituisce 403 (directory /var/www/html vuota). Per testare che PHP-FPM funzioni:

docker exec nginx-fpm sh -c 'echo "<?php echo \"ok \" . PHP_VERSION; ?>" > /var/www/html/index.php'
curl http://localhost:8080/

Arresto e pulizia

docker stop nginx-fpm
docker rm nginx-fpm

Per rimuovere anche l'immagine locale:

docker rmi nginx-fpm

Note

  • Il container esegue come root perché Nginx e Supervisor richiedono privilegi elevati; i worker Nginx/PHP-FPM girano come www-data.
  • COPY . /var/www/html copia il codice sorgente all'interno dell'immagine. Se usi un volume basta ignorarlo.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages