Cari lettori, di seguito oggi vi propongo un esempio di docker-compose.yml
per l’installazione di WordPress utilizzando un’immagine di MySQL, un’immagine di WordPress e un proxy inverso Nginx su porta 443 con un certificato SSL generato tramite Let’s Encrypt:
Ecco lo yaml
version: '3.7'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_mysql_root_password
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: your_mysql_password
wordpress:
depends_on:
- db
image: wordpress:latest
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: your_mysql_password
WORDPRESS_DB_NAME: wordpress
volumes:
- wordpress:/var/www/html
proxy:
image: nginx:latest
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
- ./logs:/var/log/nginx
- ./certbot/conf:/etc/letsencrypt
- ./certbot/www:/var/www/certbot
depends_on:
- wordpress
command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & certbot --nginx -n -q --agree-tos --email your_email_address -d your_domain_name && nginx -s reload'"
volumes:
db_data:
wordpress:
certbot:
In questo file docker-compose.yml
, abbiamo definito tre servizi: db
, wordpress
e proxy
.
Il servizio db
utilizza l’immagine di MySQL versione 5.7 e monta un volume db_data
per conservare i dati del database. Vengono anche definiti alcuni parametri di ambiente per la configurazione del database MySQL.
Il servizio wordpress
dipende dal servizio db
e utilizza l’immagine di WordPress più recente. Viene configurato per accedere al database MySQL utilizzando le variabili di ambiente definite e monta un volume wordpress
per conservare i dati di WordPress.
Il servizio proxy
utilizza l’immagine di Nginx e viene configurato per fungere da proxy inverso per il servizio WordPress. Viene esposto sulla porta 80 e 443 e monta una configurazione personalizzata di Nginx, nginx.conf
, che inoltra le richieste HTTP e HTTPS al servizio WordPress. Viene anche montato un volume logs
per registrare i log di accesso e di errore di Nginx.
Inoltre, abbiamo definito due volumi certbot/conf
e certbot/www
per la configurazione e il contenuto del certificato SSL. Il comando del servizio proxy
utilizza Certbot per generare un certificato SSL tramite Let’s Encrypt e configurare automaticamente Nginx per utilizzare il certificato. Il certificato SSL viene salvato nei volumi certbot/conf
e certbot/www
.
Per avviare i contenitori, posizionati nella stessa directory in cui si trova il file docker-compose.yml
e esegui il comando docker-compose up
.