WordPress su container Docker

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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *