Panoramica
In questo articolo esamineremo i passaggi per installare WordPress utilizzando Docker. In altre parole, installeremo WordPress con un contenitore Docker e anche con Docker Compose. Lo scenario per la procedura seguente sarà il seguente:singola macchina host (un server Debian) e un singolo motore Docker in esecuzione. Installeremo un contenitore docker WordPress ufficiale sul nostro host e configureremo anche la persistenza dei dati. Questo metodo ovviamente funzionerà su altre macchine host Linux purché esegua il motore docker.
Requisiti:
- Host Linux
- Docker installato e funzionante.
Installa Docker
Per l'installazione della finestra mobile possiamo utilizzare lo script Docker di installazione automatica ufficiale se stai utilizzando Debian, Ubuntu, Raspbian come host. Altrimenti fai riferimento ai documenti Docker o a questo post.
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Aggiungi la finestra mobile al tuo gruppo di utenti:
sudo usermod -aG docker <username>
Installa WordPress utilizzando il contenitore Docker
Per installare il contenitore Docker di WordPress, possiamo utilizzare i seguenti comandi:
docker run --name some-wordpress -p 8080:80 -d wordpress
Ciò distribuirà un contenitore Docker che eseguirà il server Web, l'installazione di WordPress, PHP e il server di database MySQL (MariaDB). Questa opzione non è una distribuzione ideale, principalmente perché tutto su di esso, anche i dati del sito Web rimarranno e verranno archiviati all'interno del contenitore e ogni volta che il contenitore viene riavviato, tutti i dati andranno persi. Ecco perché è indispensabile disporre di dati persistenti per WordPress (memorizzare i dati sull'host). Per quel tipo di distribuzione, si consiglia di eseguire i contenitori di WordPress come segue:
DB container:
docker run -e MYSQL_ROOT_PASSWORD=<password> -e MYSQL_DATABASE=wordpress --name wordpressdb -v "$PWD/database":/var/lib/mysql -d mariadb:latest --restart:unless-stopped
WordPress container:
docker run -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=<password> --name wordpress --link wordpressdb:mysql -p 80:80 -v "$PWD/html":/var/www/html -d wordpress --restart:unless-stopped
In questo tipo di distribuzione, abbiamo distribuito i contenitori di database e wordpress separatamente. Scomposizione dei comandi:
Contenitore DB:
-e: con l'argomento -e impostiamo le variabili d'ambiente che saranno in questo caso le credenziali e i parametri del database (la password e il nome del database).
–nome: name argomento è il modo in cui imposteremo il nome per il nome del contenitore del nostro database.
-v: con questo argomento impostiamo e montiamo una directory sul nostro server host in cui il contenitore salverà tutti i dati del database e non all'interno del contenitore. Questo parametro è importante poiché imposterà la persistenza dei dati.
-d: con questo argomento selezioniamo la nostra immagine del contenitore docker, in questo caso abbiamo utilizzato l'ultima immagine del database mariadb.
–riavvio: Argomento che indicherà al demone Docker di riavviare il container ogni volta che il container viene arrestato.
Contenitore WordPress:
-e: per il contenitore docker di WordPress impostiamo le variabili di ambiente che sono anche parametri del contenitore del database in modo che WordPress possa accedere al database.
–nome: anche un argomento per impostare il nome del contenitore wordpress.
–link: argomento collegamento database (per impostare la nostra connessione al database da Wodpress al contenitore MariaDB).
NOTA: Riguardo al –link argomento, Docker ha annunciato che questa sarà in futuro la funzionalità legacy e potrebbe essere rimossa nei futuri aggiornamenti di Docker e potrebbe interrompere la connessione del contenitore del database. Per questo motivo, se prevedi di avere questo tipo di distribuzione, è preferibile distribuire questa configurazione di WordPress con Docker Compose o come uno stack in cui WordPress dipenderà dalla rete Docker per connettersi al database MariaDB. Questo è trattato nel prossimo capitolo.
-p: Variabile della porta esposta. Quali porte esporre sull'host e sul container affinché WordPress sia accessibile pubblicamente.
-v: Il punto di montaggio sulla macchina host in cui aggiungeremo una directory dall'host e salveremo i file di WordPress, ovvero la persistenza dei dati.
-d: L'immagine della finestra mobile che useremo.
–riavvio: Argomento che indicherà al demone Docker di riavviare il container ogni volta che il container viene arrestato.
Versione di composizione Docker
Installa Docker Componi:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
Fare riferimento alla documentazione della finestra mobile per l'ultima versione di composizione della finestra mobile.
Puoi creare una directory separata per questo file di composizione e all'interno della directory per creare il file di composizione Docker:
mkdir wordpress && cd wordpress/
touch docker-compose.yml && nano docker-compose.yml
Puoi utilizzare la seguente configurazione di yaml:
version: '3.1'
services:
wordpress:
image: wordpress
restart: always
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
volumes:
- wordpress:/var/www/html
db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- db:/var/lib/mysql
volumes:
wordpress:
db:
Il file di configurazione è abbastanza simile alle righe di comando per distribuire il contenitore del capitolo precedente.
Il deploy dello stack, mentre sei ancora nella directory di composizione del file, esegui il comando:
sudo docker-compose up -d
Ci vorranno un paio di minuti per completare la distribuzione.
Distribuisci come stack
Per distribuire WordPress come stack con Docker o Docker Compose, denomina il file di configurazione come stack.yml ed esegui uno dei seguenti comandi:
Docker
docker stack deploy -c stack.yml wordpress
Docker compose
docker-compose -f stack.yml up
Indipendentemente dal passaggio che scegli per l'implementazione, il risultato positivo dovrebbe essere simile al seguente:
E dopo puoi accedere all'installazione di WordPress tramite il browser:
NOTA: Se hai un firewall UFW o IPTABLES in esecuzione, è necessario aprire le porte appropriate (le porte che hai esposto per la macchina host) per poter accedere a WordPress tramite browser:
UFW
sudo ufw allow 8080
IPTABLES
sudo iptables -I INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
or
sudo iptables -A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
Riepilogo
Per riassumere l'articolo, abbiamo mostrato i passaggi su come installare WordPress utilizzando Docker e anche come installare WordPress utilizzando Docker Compose. Come hai notato, abbiamo diversi modi per delpoy WordPress usando Docker e Docker Compose. Ma nel complesso, il metodo molto preferito è avere un contenitore separato per WordPress e per il server MariaDB/MySQL. Per una scalabilità più semplice in futuro e anche la persistenza dei dati è un must.
Grazie per il tuo tempo...