Docker e  Docker Compose

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:

wordpress:latest https://github.com/docker-library/wordpress/blob/c919246e5ce9a94cb0ad275072d34563ef2ecc46/php7.2/apache/Dockerfile

comments powered by Disqus