Il mio container Docker Wordpress

Questo è un progetto nato da una mia necessità: avere wordpress installato senza avere tutti i file in /var/www o simili ma nella cartella corrispondenza al progetto. Questo perchè mi è capitato e mi sta capitando di dover sviluppare più di un sito internet tema wordpress in contemporanea. Questo mi ha portato a sviluppare un container docker wordpress.

wordpress\_docker

Per chi non sa cos’è Docker rimando a un mio articolo qui, per tutti gli altri continuo con la spiegazione del contenuto del repository del progetto.

Il repository contiene un file .gitignore e un file run.sh che permette di lanciare i docker in modo automatico (non ricordo mai i comandi per lanciare il docker) che servono al progetto ma non sono la componente principale.

Il file veramente importante è il docker-compose.yml che serve a descrivere come sono configurati i container che andremo ad utilizzare e come interagiscono tra di loro.

Iniziamo quindi da quello che concettualmente è il primo container:

  mysql:
	  image: mysql:latest
	  volumes:
		- "./.data/db:/var/lib/mysql"
	  environment:
		  MYSQL_ROOT_PASSWORD: secret
		  MYSQL_DATABASE: project
		  MYSQL_USER: project
		  MYSQL_PASSWORD: project
  
in cui
  • image definisce da quale immagine prende la base
  • volumes definisce dove vengono salvati i dati (altrimenti tra un avvio di docker e l’altro perdi i dati)
  • environment definisce tutte le variabili d’ambiente, che in questo caso sono i dati di configurazione del database

Il secono container wordpress contiene, invece, server e installazione di Wordpress.

    wordpress:
      image: wordpress
      ports:
        - 8080:80
      links:
        - mysql
      working_dir: /var/www/html
      volumes:
        - "./wordpress/wp-content/:/var/www/html/wp-content"
      environment:
        WORDPRESS_DB_PASSWORD: project
        WORDPRESS_DB_USER: project
        WORDPRESS_DB_NAME: project
    

in cui

  • imge definisce che il container deriva dall’ultima installazione di Wordpress
  • ports definisce su che porta questo docker lavora, in modo da poter aprire un browser e simulare una installazione Wordpress
  • link definisce a quali altri container è legato per il funzionamento, in questo caso al container del database che è mysql
  • working_dir che è la cartella di installazione di Wordpress
  • volumes che configura una cartella wordpress/wp-content/ nella root del progetto dove è possibile installare i temi e plugin che si sta sviluppando
  • enviroment che configura le variabili d’ambiente per l’accesso al database

Tutto questo meccanismo mi permette avere attualmente 5 installazioni di server Apache e 5 server MySql non comunicanti tra loro. In oltre, tutto questo non è sempre attivo in background ma viene attivato quando eseguo i comandi di avvio e termina quando killo il processo. Questo mi permette, in oltre, di avere 2 versioni di server e PHP installati nella macchina e, senza tanti problemi, a lavoro finito cestinare tutto senza lasciare traccia sul computer.

Spero che il codice vi sia utile e lo consiglio se dovete sviluppare temi, in quanto permette di avere tutto Wordpress installato senza bisogno di configurare niente, tutto con la root puntata alla cartella del progetto.

Buon sviluppo

Fundor333

comments powered by Disqus