Come ripristinare un ambiente Wordpress containerizzato
Perché ripristinare un ambiente Wordpress containerizzato?
Se vi trovate a dover effettuare modifiche ad un progetto già in produzione e non avete a disposizione un ambiente di sviluppo è possibile crearne uno "containerizzato" replicando lo stato "de facto" di quello di partenza.
Nello specifico stiamo parlando di un ambiente Wordpress.
I passaggi per ripristinare un ambiente Wordpress containerizzato
Creare un file con estensione .yml o .yaml
Il file server qui sotto offre la base per ripristinare un ambiente wordpress:
version: '3.3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: pa$$w0rd
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
volumes:
- ./wordpress:/var/www/html
ports: - "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
db_data:
Cosa significano queste chiavi?
- version: definisce il format version del docker-compose.[yml | yaml];
- services: definisce una lista di container da creare;
- image: specifica l'immagine di partenza da applicare al container (se presente nella cache locale sarà preso da lì, altrimenti verrà scaricato da https://hub.docker.com/), possono essere utilizzate anche immagini create in precedenza;
- volumes: specifica un binding fra path utilizzati per montare volumi esterni al container in modo da mantenere dati in persistenza;
- restart: specifica quale politica utilizzare in caso il container fallisca;
- environment: definisce delle variabili ambientali per il container;
- depends_on: specifica eventuali dipendenze con altri container presenti all'interno del docker-compose.[yml | yaml], questo è molto importante perché determina anche le network necessarie alla comunicazione fra container;
- ports: definisce il bind fra porta interna ed esterna al container (nell'esempio la porta esterna 8000 punta alla porta interna 80)
All'interno della stessa directory aggiungere una folder nominato "wordpress", questa cartella sarà montata all'interno del path "/var/www/html".
Avviare la costruzione dei container con Docker e Docker Compose
Aprire il command prompt e spostarsi all'interno della folder dove è presente il docker-compose.[yml | yaml] ed eseguire il comando:
docker-compose up -d
il parametro -d serve al lanciare il processo come demone in background.
Una volta terminata la costruzione eseguendo il comando
docker ps
potremo vedere i container in esecuzione.
Il nome dei container appena costruiti sarà uguale a {folderName}_{serviceName}_{int}.
Una volta completata la costruzione, inserire i file presenti sull'ambiente di produzione ad esclusione del wp-config.php nella cartella "wordpress".
Entrare nel container
Per entrare nel container è possibile eseguire il comando
docker exec -it [CONTAINER ID | NAME] /bin/bash
/bin/bash è richiesto in quanto l'immagine di base dei container utilizzati è Linux, se l'immagine derivasse da un ambiente Windows sarebbe cmd o powershell per esempio.
Ripristinare la situazione dall'ambiente Wordpress di sviluppo
A questo punto abbiamo un ambiente pulito sul quale poter ripristinare i dati.
DevOps! Enjoy
Apri un browser su http://localhost:8000
Reference
YAML: http://yaml.org/
Versione supportata in base alla versione di docker: https://docs.docker.com/compose/compose-file/
Docker Compose Overview: https://docs.docker.com/compose/overview/
Docker volumes: https://docs.docker.com/storage/volumes/
Docker file immagini:
- mysql:5.7 https://github.com/docker-library/mysql/blob/fc3e856313423dc2d6a8d74cfd6b678582090fc7/5.7/Dockerfile
wordpress:latest https://github.com/docker-library/wordpress/blob/c919246e5ce9a94cb0ad275072d34563ef2ecc46/php7.2/apache/Dockerfile