WordPress su Docker: i Dockerfile

6 dicembre 2017

Si è visto in precedenza che la soluzione più semplice e rapida per eseguire WordPress su Docker è offerta da Docker Compose, e la configurazione dell’ambiente può avvenire con o senza la creazione di un Dockerfile. In questo capitolo si dirà quando è utile o necessario creare un Dockerfile.

Cosa è un Dockerfile

Un Dockerfile è un file di testo che contiene tutti i comandi necessari a generare un’immagine Docker. Utilizzando il comando docker build gli utenti possono creare una build automatica a partire da un Dockerfile ed un contesto. Il contesto è costituito da un insieme di file collocati in una specifica location e individuati dalle istruzioni PATH e URL:

docker build /path/to/dockefile

Il Dockerfile non è sempre necessario: per progetti semplici, come lo sviluppo di un sito web con WordPress, possono bastare le immagini ufficiali di MySQL o MariaDB e di WordPress. Il Dockerfile è necessario, però, nel caso in cui si voglia creare un’immagine unica e personalizzata, come nel caso in cui si avesse bisogno di una particolare configurazione del file php.ini o di specifiche estensioni di PHP.

Non è necessario creare da zero il file, in quanto la repository di Docker offre un set di Dockerfile per ognuna delle immagini ufficiali già disponibili. Ad esempio, nella pagina dedicata a WordPress, è presente un elenco di tutte le immagini disponibili, con il link al Dockerfile corrispondente. È possibile, quindi, utilizzare tali file come template da modificare per creare i propri Dockerfile.

Le istruzioni di un Dockerfile

Il Dockerfile per WordPress con Apache e PHP 7.0, disponibile per il download su Github, costituisce un ottimo template su cui operare.

Figura 1. WordPress Dockerfile su Github.

WordPress Dockerfile

Ogni Dockerfile deve necessariamente iniziare con un’istruzione FROM che definisce l’immagine base su cui si sta sviluppando. Il Dockerfile in esame comincia con l’struzione:

FROM php:7.0-apache 

Le istruzioni che cominciano con il carattere # sono commenti:

# install the PHP extensions we need

Il carattere # in qualunque altra posizione che non sia il primo carattere di una riga, individua invece un argomento.

Il comando RUN esegue le istruzioni specificate in un layer al top dell’immagine corrente e mette a disposizione una commit che sarà utilizzata per il task successivo. Il comando assume due forme:

#il comando viene eseguito in una shell
RUN <command> 
#il comando viene eseguito come exec
RUN ["executable", "param1", "param2"]

La prima istruzione RUN del Dockerfile in esame istalla le estensioni PHP richieste:

RUN set -ex; \

Il carattere \ continua una singola istruzione RUN sulla riga successiva:

# install the PHP extensions we need
RUN set -ex; \
	\
	apt-get update; \

Il successivo comando RUN imposta le opzioni del file php.ini:

RUN { \
		echo 'opcache.memory_consumption=128'; \
		echo 'opcache.interned_strings_buffer=8'; \
		...
	} > /usr/local/etc/php/conf.d/opcache-recommended.ini

Qualunque modifica al file php.ini potrà essere operata all’interno di questo comando. Nella tabella che segue si descrivono i comandi utilizzati nel Dockerfile di WordPress.

ComandoDescrizione
FROMDefinisce l’immagine base del Dockerfile.
RUNEsegue ogni comando specificato in un layer al top dell’immagine corrente e consegna il risultato per le operazioni successive.
VOLUMECrea un mount point con il nome specificato.
ENVImposta i valori delle variabili d’ambiente.
COPYCopia i file contenuti nella directory d’origine nella directory di destinazione (filesystem del container).
ENTRYPOINTPermette di configurare un container che girerà come eseguibile.
CMDFornisce valori di default per un container in esecuzione (è ammesso un solo comando CMD).

I Dockerfile costituiscono argomento per utenti avanzati e, come anticipato, il loro utilizzo non è necessario in progetti semplici che non richiedono risorse particolari. Prima di cimentarsi nella progettazione del file è è necessario leggere le best practices e l’elenco dei comandi descritti nella documentazione online.

Tutte le lezioni

1 ... 48 49 50 ... 92

Se vuoi aggiornamenti su WordPress su Docker: i Dockerfile inserisci la tua e-mail nel box qui sotto:
Tags: ,
 
X
Se vuoi aggiornamenti su WordPress su Docker: i Dockerfile

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento dei dati per attività di marketing