Site icon Tosolini.info

Docker: Modificare php.ini per WordPress

Vediamo in questo brevissimo articolo come risolvere una problematica che potrebbe presentarsi abbastanza facilmente con WordPress.

Le impostazioni base di PHP sono tarate parecchio al risparmio, per fare un esempio banale: non permette il caricamento di una immagine con più di due megabytes di peso.

Su un server “normale” si va dentro il file php.ini e si modificato le direttive che ci interessano, ma per un container Docker? Certamente possiamo collegarci alla shell, oppure caricare un nuovo file, ma al primo aggiornamento dell’immagine perdiamo tutto.

Fortunatamente PHP utilizza una cartella dove possiamo aggiungere dei file .ini personalizzati. Nel caso del container Docker, al suo interno, la cartella è /usr/local/etc/php/conf.d/.

Quindi creiamo nel server Docker (non il container) un file, io di solito utilizzo il nome del tema che sto usando per non sbagliarmi, l’importante che abbia come estensione “.ini”

file_uploads = On
memory_limit = 256M
upload_max_filesize = 10M
post_max_size = 32M

Le direttive sopra possono essere cambiate / aggiunte a piacimento. Ora passiamo a Docker, nel file “docker-compose.yml” andremo semplicemente ad aggiungere un volume, un po’ come se montassimo un disco esterno, solo che in questo caso lo facciamo per un file singolo.

version: '3.1'

services:

  wordpress:
    image: arm64v8/wordpress
    restart: always
    ports:
      - 80:80
    environment:
      WORDPRESS_DB_USER: xxxx
      WORDPRESS_DB_PASSWORD: xxxx
      WORDPRESS_DB_NAME: xxxx
    volumes:
      - ./wordpress:/var/www/html
      - ./file.ini:/usr/local/etc/php/conf.d/file.ini

L’ultima riga preleva un file.ini dal server docker e l’aggiunge al container. Nel momento in cui viene riavviato il container prenderà in carico le nuove direttive di PHP. Con Portainer il riavvio avviene contestualmente al salvataggio. Viceversa, potete dare il comando:

docker container restart NOMECONTAINER

Conclusioni

Con questo metodo possiamo infilare anche configurazioni particolari di Apache o Nginx, sostanzialmente la tecnica sarà la stessa.

Exit mobile version