Come eseguire WordPress con Docker su Ubuntu

Come eseguire WordPress con Docker su Ubuntu

Installare WordPress su un server privato virtuale (VPS) Ubuntu richiede comunemente LAMP (Linux, Apache, MySQL, PHP). Tuttavia, puoi anche configurare la piattaforma usando Docker, uno strumento di containerizzazione che impacchetta le applicazioni insieme alle loro dipendenze.

Utilizzando Docker, l’installazione di WordPress diventa più semplice, perché viene eseguita a partire da immagini preconfigurate che contengono tutti i componenti necessari. Questo approccio offre diversi vantaggi: è modulare, facile da aggiornare e scalare, e consente di ridistribuire rapidamente l’applicazione se hai bisogno di una nuova istanza.

In questo articolo ti spieghiamo come eseguire WordPress con Docker su Ubuntu. Imparerai ogni passaggio, dalla preparazione dei prerequisiti alla gestione di WordPress come sistema di gestione dei contenuti (CMS) in container.

Prerequisiti per installare WordPress con Docker

Prima di installare WordPress su Docker, assicurati di avere un VPS con una versione recente di Ubuntu, come la 22.04 o successiva, per evitare problemi di compatibilità.

Il tuo server dovrebbe anche offrire il pieno accesso root per evitare errori di autorizzazione quando modifichi i file di sistema. Inoltre, punta un nome di dominio verso il tuo VPS così il tuo sito WordPress sarà accessibile al pubblico.

Se non hai un VPS, ti consigliamo di scegliere un piano VPS Docker di Hostinger. Dato che Docker e WordPress sono relativamente leggeri, il nostro piano KVM 1 – con CPU a singolo core, 4 GB di RAM e 50 GB di spazio di archiviazione – dovrebbe essere sufficiente. Puoi passare a un piano di livello superiore se hai bisogno di più risorse man mano che il tuo sito cresce.

Con Hostinger puoi connetterti al tuo VPS come root direttamente dal browser, rendendo il processo di installazione più efficiente.

Se incontri difficoltà durante la configurazione, il nostro assistente AI Kodee è a tua disposizione per guidarti nella gestione della tua istanza WordPress. Ti basta scrivere le tue domande o descrivere le tue esigenze, e Kodee creerà per te una guida passo per passo.

Come eseguire WordPress con Docker Compose

Segui questi passaggi per installare WordPress utilizzando Docker. Prima di procedere, accedi alla CLI (interfaccia a riga di comando) del tuo VPS usando il client SSH PuTTY o il terminale. In alternativa, usa il terminale del browser di Hostinger se hai bisogno di una soluzione più semplice.

1. Installa Docker e Docker Compose

Gli utenti di Hostinger possono installare Docker e Docker Compose in pochi click, senza usare comandi, grazie al template VPS preconfigurato. Questo metodo è più semplice e è adatto ai principianti.

Attenzione! Installare un nuovo template VPS cancellerà tutti i tuoi dati. Esegui il backup dei file importanti prima di procedere.

Per farlo, apri semplicemente la pagina di gestione del tuo VPS su hPanel e vai su SO & PanelloSistema operativo. Seleziona Docker e fai click su Cambia SO.

Se vuoi avere maggiore flessibilità quando configuri lo strumento, installa Docker e Docker Compose usando i comandi.

Ora verifica se Docker e Docker Compose sono configurati correttamente usando i seguenti comandi:

docker --version
docker-compose --version

Se questi strumenti funzionano correttamente, la tua CLI mostrerà il loro numero di versione:

2. Configura la directory del tuo progetto

Crea una nuova directory di progetto per contenere tutti i tuoi file Docker e WordPress usando questo comando:

mkdir wordpress

Per impostazione predefinita, il comando creerà la cartella wordpress nella home directory dell’utente attualmente connesso. Puoi crearla in un’altra posizione o usare un nome diverso.

Poi apri la cartella usando il comando seguente:

cd wordpress

Una volta dentro, puoi iniziare a configurare Docker e WordPress.

3. Crea un file Docker Compose

Il file Docker Compose fornisce informazioni sui componenti software da installare nel tuo container. In questo caso, specifica la configurazione per WordPress e per l’applicazione del database.

Per creare un file Docker Compose, esegui il seguente comando:

sudo nano docker-compose.yml

Incolla la configurazione seguente. Sostituisci il nome utente, la password e il nome del database con i valori che preferisci.

version: "3" 
services:
  db:
    image: mysql:latest
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: MySQLRootPassword
      MYSQL_DATABASE: MySQLDatabaseName
      MYSQL_USER: MySQLUsername
      MYSQL_PASSWORD: MySQLUserPassword

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    restart: always
    ports:
      - "80:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: MySQLUsername
      WORDPRESS_DB_PASSWORD: MySQLUserPassword
      WORDPRESS_DB_NAME: MySQLDatabaseName
    volumes:
      - "./:/var/www/html"

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    restart: always
    ports:
      - "8080:80"
    environment:
      PMA_HOST: db
      PMA_USER: MySQLUsername
      PMA_PASSWORD: MySQLUserPassword

volumes:
  mysql: {}

Salva le modifiche e torna alla shell principale premendo Ctrl + XYInvio.

4. Avvia il container Docker

Esegui Docker Compose con questo comando per installare e avviare WordPress in un container. Ricorda che funziona solo quando ti trovi all’interno della directory del progetto:

docker-compose up -d

Docker Compose scaricherà le immagini da Docker Hub come specificato nel tuo file YAML, configurerà il container e imposterà la connessione di rete. A seconda della velocità della tua connessione internet, questo processo di configurazione potrebbe richiedere alcuni minuti.

Una volta terminato, dovresti vedere lo stato Done e tornare alla shell principale.

5. Accedi all’installazione di WordPress

Con il tuo container Docker attivo e funzionante, ora puoi accedere alla nuova installazione di WordPress tramite il tuo browser web. Dato che il tuo nome di dominio punta già al VPS, inseriscilo semplicemente nella barra degli indirizzi del browser.

Questo ti porterà alla procedura guidata di configurazione di WordPress. Scegli la tua lingua preferita e fai click su Continua.

Poi compila le informazioni necessarie sul tuo sito, includendo il titolo del sito, il nome utente, la password e l’indirizzo email. Una volta completato, fai click su Installa WordPress.

Successivamente, fai click su Accedi per accedere alla dashboard di WordPress. Usa le credenziali che hai appena creato per accedere al tuo pannello di amministrazione.

6. Personalizza la tua configurazione Docker

Per gli ambienti di produzione, avrai bisogno di configurazioni aggiuntive affinché il tuo sito WordPress sia sicuro e ottimizzato in termini di prestazioni. Di seguito trovi le principali personalizzazioni per distribuire WordPress usando Docker:

Uso dei file di ambiente

Per proteggere i dati sensibili, evita di inserire in modo statico le credenziali, come i nomi utente e le password del database, nel tuo file Docker Compose. Al contrario, memorizza questi valori in un file di ambiente (.env).

Nella tua directory di WordPress, crea un file .env:

nano .env

Definisci le credenziali del database di WordPress nel file .env, sostituendo i placeholder con i tuoi valori.

MYSQL_ROOT_PASSWORD=MySQLRootPassword
MYSQL_DATABASE=MySQLDatabaseName
MYSQL_USER=MySQLUsername
MYSQL_PASSWORD=MySQLUserPassword

Salva il file, poi aggiorna il file docker-compose.yml per usare queste variabili di ambiente:

db:
  image: mysql:latest
  restart: always
  environment:
    MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
    MYSQL_DATABASE: ${MYSQL_DATABASE}
    MYSQL_USER: ${MYSQL_USER}
    MYSQL_PASSWORD: ${MYSQL_PASSWORD}

Salva le modifiche e riavvia Docker Compose per applicare le nuove configurazioni:

docker-compose up -d

Ottenere certificati SSL

Un certificato SSL è importante per proteggere i dati degli utenti e migliorare il posizionamento nei motori di ricerca. Per abilitare i certificati SSL automatici, aggiungi un proxy NGINX con Let’s Encrypt nel tuo file docker-compose.yml:

services:
  nginx-proxy:
    image: jwilder/nginx-proxy
    container_name: nginx-proxy
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
  letsencrypt-nginx-proxy-companion:
    image: jrcs/letsencrypt-nginx-proxy-companion
    container_name: letsencrypt
    environment:
      NGINX_PROXY_CONTAINER: nginx-proxy
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./certs:/etc/nginx/certs
      - ./vhost.d:/etc/nginx/vhost.d
      - ./html:/usr/share/nginx/html

Successivamente, rimuovi il mapping della porta dal servizio wordpress per evitare conflitti con nginx-proxy. Inoltre, includi le etichette SSL sostituendo your_email e your_domain.com con le tue credenziali effettive:

wordpress:
  image: wordpress:latest
  labels:
    - "VIRTUAL_HOST=your_domain.com"
    - "LETSENCRYPT_HOST=your_domain.com"
    - "LETSENCRYPT_EMAIL=your_email@your_domain.com"

Allo stesso servizio WordPress, esegui solo la directory wp-content in modo che solo i file necessari siano condivisi tra l’host e il container:

volumes:
  - ./wp-content:/var/www/html/wp-content

Ecco il contenuto finale del file docker-compose.yml dopo aver usato le variabili di ambiente e aggiunto il supporto SSL con NGINX:

version: "3"

services:
  db:
    image: mysql:latest
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
    volumes:
      - mysql:/var/lib/mysql

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: ${MYSQL_USER}
      WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}
      WORDPRESS_DB_NAME: ${MYSQL_DATABASE}
    volumes:
      - ./wp-content:/var/www/html/wp-content
    labels:
      - "VIRTUAL_HOST=your_domain.com"
      - "LETSENCRYPT_HOST=your_domain.com"
      - "LETSENCRYPT_EMAIL=your_email@your_domain.com"

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    restart: always
    ports:
      - "8080:80"
    environment:
      PMA_HOST: db
      PMA_USER: ${MYSQL_USER}
      PMA_PASSWORD: ${MYSQL_PASSWORD}

  nginx-proxy:
    image: jwilder/nginx-proxy
    container_name: nginx-proxy
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - ./certs:/etc/nginx/certs
      - ./vhost.d:/etc/nginx/vhost.d
      - ./html:/usr/share/nginx/html

  letsencrypt-nginx-proxy-companion:
    image: jrcs/letsencrypt-nginx-proxy-companion
    container_name: letsencrypt
    environment:
      NGINX_PROXY_CONTAINER: nginx-proxy
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./certs:/etc/nginx/certs
      - ./vhost.d:/etc/nginx/vhost.d
      - ./html:/usr/share/nginx/html

volumes:
  mysql: {}

Non dimenticare di salvare queste modifiche e riavviare Docker Compose subito dopo.

docker-compose up -d

7. Gestisci e scala WordPress con Docker

Dopo aver eseguito WordPress su Docker per un certo periodo, scala la tua configurazione per ottimizzarne le prestazioni ed esegui regolarmente il backup dei tuoi file per mantenere l’integrità dei dati. Ecco come fare:

Scalare i container WordPress

Man mano che il traffico del tuo sito cresce, valuta di scalare il tuo servizio WordPress per eseguirlo su più container. Ti permette di distribuire in modo uniforme le richieste degli utenti tra i diversi container, garantendo prestazioni ottimali e la massima disponibilità.

Nel tuo file Docker Compose, specifica il numero desiderato di repliche, ad esempio 3, per aggiungere altre istanze del tuo container WordPress:

 wordpress:
    depends_on:
      - db
    image: wordpress:latest
    restart: always
    ports:
      - "80:80"
  environment:
    WORDPRESS_DB_HOST: db:3306
    WORDPRESS_DB_USER: ${MYSQL_USER}
    WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}
    WORDPRESS_DB_NAME: ${MYSQL_DATABASE}
  volumes:
    - "./:/var/www/html"
  deploy:
    replicas: 3

Applica le modifiche eseguendo:

docker-compose up -d --scale wordpress=3

Docker avvierà ora container WordPress aggiuntivi e distribuirà il traffico in modo uniforme tra di essi.

Backup dei file di WordPress

Per proteggere il tuo sito WordPress dalla perdita o dal danneggiamento dei dati, dovresti eseguire il backup sia dei file di WordPress che del database.

Poiché Docker monta la directory di WordPress come volume, puoi eseguire il backup di questa directory usando un semplice comando come questo:

cp -r /path/to/wordpress /path/to/backup/location

Per eseguire il backup del tuo database MySQL, esegui il comando seguente. Sostituisci [db_container_name], [MYSQL_USER], [MYSQL_PASSWORD] e [MYSQL_DATABASE] con il nome effettivo del tuo container del database e con le tue credenziali:

docker exec [db_container_name] /usr/bin/mysqldump -u [MYSQL_USER] -p[MYSQL_PASSWORD] [MYSQL_DATABASE] > backup.sql

Questo comando crea un dump del database, che potrai ripristinare in un secondo momento se necessario.

In alternativa, i clienti VPS di Hostinger possono usare i nostri strumenti di backup integrati per eseguire facilmente il backup e il ripristino dei dati. Per accedere a queste funzionalità, vai su Backup & monitoraggio → Snapshot & backup nella barra laterale sinistra della dashboard del tuo VPS.

Quindi scegli se creare uno snapshot per salvare la configurazione attuale oppure ripristinare i dati precedenti da un backup automatico settimanale.

Gestisci i backup con Kodee

Puoi elencare i backup disponibili e gestire la pianificazione dei backup semplicemente chiedendo a Kodee. Per esempio, chiedi: "Elenca i backup disponibili sul mio VPS hostname.com."

Conclusioni

In questo articolo hai imparato come installare e configurare WordPress usando Docker su un VPS Ubuntu. Dalla configurazione di Docker Compose alla personalizzazione per gli ambienti di produzione, ora hai un’installazione di WordPress completamente funzionale in un ambiente containerizzato.

Dopo aver eseguito WordPress utilizzando Docker, valuta di ottimizzare ulteriormente il tuo sito, ad esempio usando una content delivery network (CDN). Puoi anche configurare diversi container Docker se decidi di ospitare altre applicazioni sullo stesso VPS.

Se hai domande o vuoi condividere la tua esperienza nello sviluppo di siti WordPress con Docker, sentiti libero di usare il box dei commenti qui sotto.

FAQ su WordPress Docker

Quali sono i vantaggi di usare Docker per WordPress?

Con Docker puoi distribuire e scalare il tuo ambiente WordPress in base alle tue esigenze. Docker isola le dipendenze, rendendo più semplice aggiornare, eseguire il backup e migrare il tuo sito WordPress in modo efficiente.

Posso eseguire più siti WordPress su un singolo server con Docker?

Sì, Docker ti permette di eseguire più siti WordPress su un unico server utilizzando container separati per ciascun sito. Configura ogni container con porte, volumi e connessioni al database univoci per garantire l’isolamento.

Come configuro un container Docker con WordPress?

Per configurare un container Docker con WordPress, usa un file Docker Compose per definire servizi, porte e variabili d’ambiente. Per i dati sensibili, come le credenziali del database, ti consigliamo di conservarli in un file .env collegato al file Compose.

Tutti i contenuti dei tutorial presenti su questo sito web sono soggetti ai rigorosi standard editoriali e ai valori di Hostinger.

Author
L'autore

Michela Z.

Michela si focalizza sul condividere le sue conoscenze di hosting e marketing digitale e sull'aiutare le aziende ad avere successo online, con un particolare interesse per la creazione di siti web e di e-commerce. Nel suo tempo libero le piace sedersi davanti un buon libro e ascoltare musica. Seguila su LinkedIn.

Cosa dicono i nostri clienti

Comments

0 responses

Write a respond

Please fill the required fields.Please accept the privacy checkbox.Please fill the required fields and accept the privacy checkbox.

Thank you! Your comment has been successfully submitted. It will be approved within the next 24 hours.