Installazione e configurazione di WordPress come container Docker su Raspberry Pi
I prerequisiti per seguire passo passo questa guida ovviamente sono:
- avere a disposizione un Raspberry Pi
- OS Raspbian (preferibilmente la versione Lite) installato
- applicazione Docker installata
Fatta questa premessa, colleghiamoci in ssh
sul nostro Raspberry Pi e andiamo a creare una cartella che, nella fase iniziale ci servirà per fornire le informazioni necessarie all’installazione e successivamente conterrà i dati del nostro sito WordPress.
mkdir /home/pi/docker-myblog
cd /home/pi/docker-myblog
mkdir html data
Ora posizioniamoci nella cartella appena creata e qui andiamo a creare 3 file.
Il primo file da creare sarà docker-compose.yml che conterrà le informazioni dei container da scaricare (WordPress e mysql) e le relative configurazioni come ad esempio la porta da pubblicare verso l’esterno (80) e la cartella accessibile dall’esterno del container sia per il database che per le pagine html di worpress.
Dal terminale eseguiamo:
nano docker-compose.yml
ed incolliamo quanto segue all’interno:
version: '3' services: wordpress: container_name: wordpress image: wordpress volumes: - ./html:/var/www/html ports: - '80:80' restart: always env_file: - blog_env mysql: container_name: mysql image: hypriot/rpi-mysql volumes: - ./data:/var/lib/mysql restart: always env_file: - mysql_env volumes: mysql: null wordpress: null
Premere CTRL+X
per chiudere e salvare, confermare il nome del file premendo il tasto S
ed infine premere INVIO
.
Il secondo file sarà mysql_env che conterrà le informazioni necessarie per impostare mysql (ovviamente sostituite le password).
Eseguiamo anche qui il seguente comando per modificare il file attraverso l’editor di testo nano
sudo nano mysql_env
e riportiamo quanto segue:
MYSQL_ROOT_PASSWORD=secret MYSQL_DATABASE=blog MYSQL_USER=blog_user MYSQL_PASSWORD=blogSecret
Anche qui premere CTRL+X
per chiudere e salvare, confermare il nome del file premendo il tasto S
ed infine premere INVIO
.
Terzo ed ultimo file è blog_env che contiene gli stessi dati precedenti, ma che verranno passati a WordPress.
Anche qui eseguiamo il seguente comando per modificare il file con l’editor di testo nano
sudo nano blog_env
e riportiamo quanto segue:
WORDPRESS_DB_HOST=mysql WORDPRESS_DB_USER=blog_user WORDPRESS_DB_PASSWORD=blogSecret WORDPRESS_DB_NAME=blog
Anche qui premere CTRL+X
per chiudere e salvare, confermare il nome del file premendo il tasto S
ed infine premere INVIO
.
Arrivati a questo punto, non ci resta che lanciare il seguente comando per far si che Docker scarichi ed installi le immagini di wordpress e mysql dal dockerhub con i parametri forniti nel file yml
sudo docker-compose up -d --build
Ora non ci resta che completare l’installazione tramite l’interfaccia web di WordPress, per cui apriamo il nostro web-browser preferito ed inseriamo l’indirizzo IP del nostro Raspberry Pi e verremo reindirizzati sulla seguente pagina
Buon divertimento!
Ciao e grazie per questa guida.
L’ho seguita solo dopo aver installato Docker e Docker Compose come suggerito in un’altra guida su withblue.ink
Funziona. Cioè, digito l’IP dentro al browser e vedo l’installer di WP.
Ma cosa dovrei fare se volessi testare più siti contemporaneamente?
Grazie per l’aiuto.
Ciao Alessandro,
se vuoi aggiungere un ulteriore sito ti consiglierei di creare un altro container di wordpress in docker, ovviamente modificando la porta esterna (ad esempio 81:80) nel file docker-compose.yml. Anche per il db da dedicare al secondo sito, puoi creare un ulteriore container di mysql (ovviamente chiamato in modo diverso rispetto al precedente). Qui di seguito un esempio del file docker-compose.yml
version: '3'
services:
wordpress:
container_name: wordpress2
image: wordpress
volumes:
- '/home/pi/docker-myblog2/html:/var/www/html'
ports:
- '81:80'
restart: always
env_file:
- blog_env
mysql:
container_name: mysql2
image: hypriot/rpi-mysql
volumes:
- '/home/pi/docker-myblog2/data:/var/lib/mysql2'
restart: always
env_file:
- mysql_env
volumes:
mysql: null
wordpress: null
ovviamente dovrai creare anche un nuovo file mysql_env e blog_env da inserire nella nuova cartella
Grazie mille per l’aiuto! Comincio a capire il funzionamento – giustificato allo scopo – di Docker.
Una configurazione per ciascun container.
Una cosa mi sfugge: perché questa tua configurazione installa apache di default? Non mi pare sia specificato. A meno che non lo sia dall’espressione “image: wordpress”.
Ho visto in altri casi usare:
webserver:
depends_on:
– wordpress
image: nginx:1.15.12-alpine
container_name: webserver
ecc ecc ecc…
Porta pazienza, ancora non conosco Docker e la sua sintassi.
Nella maggior parte dei progetti trovati su internet viene utilizzato apache con waordpress, nulla toglie che se ti trovi meglio con nginx puoi utilizzare quello per la gestione delle pagine web
Mi sono dimenticato di chiederti la cosa più importante!
Se con il primo container il sito risponde ed è visibile digitando l’ip del rpi, come raggiungo gli altri wordpress degli altri container?
Per raggiungere il secondo sito dovra digitare l’ip del Raspberry Pi seguito dal numero di porta (ad esempio 192.168.0.101:81)
Grazie mille del supporto!
[…] un precedente articolo ho descritto come installare WordPress come container in Docker.Quest’oggi andrò a spiegare […]
Ciao. Soluzione riprovata a distanza di qualche tempo, purtroppo non riesco a far andare nulla, nemmeno una sola istanza di wp. Perdona, non sono un esperto, tuttavia pensavo di aver capito come gestire più siti su più porte, ma non sono mai riuscito a far partire niente. Mi propongo come aiutante nel caso volessi riscrivere la guida in modo più approfondito. 🙂
Ciao,
ho provato a eseguire l’installazione come da guida ed effettivamente c’è un problema … ho notato però che il problema risiede con i file (di default) di wordpress. Per raggirare il problema ho fatto quanto segue (prima di lanciare il comando docker-compose up -d).
Mi sono posizionato all’interno della cartella /home/pi/docker-myblog/html e da qui ho lanciato i seguenti comandi:
wget https://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
mv /home/pi/docker-myblog/html/wordpress/* /home/pi/docker-myblog/html/
rm latest.tar.gz
rmdir wordpress
cd ..
docker-compose up -d