Come installare phpMyAdmin con Docker Compose
Ottieni phpMyAdmin attivo e funzionante con Docker senza sforzo: la nostra guida fornisce tutti gli elementi essenziali per una configurazione rapida e fluida.
Per oltre due decenni, phpMyAdmin è stata la soluzione di riferimento per la gestione dei database MySQL e MariaDB.
È uno strumento gratuito e open source scritto in PHP che consente agli utenti di gestire varie attività di database, come la creazione, la modifica e l'eliminazione di database; gestione di tabelle, campi e indici; eseguire istruzioni SQL; e gestione degli utenti e delle autorizzazioni tramite una comoda interfaccia basata sul web.
Per installarlo, però, è necessario che PHP sia installato e che il supporto php-fpm configurato con il tuo server web, sia esso NGINX, Apache o altro. Fortunatamente, Docker semplifica questo processo, consentendoti di configurare phpMyAdmin rapidamente, in pochi minuti. Ciò ti consente di concentrarti immediatamente sulla gestione dei tuoi database MySQL/MariaDB senza impantanarti nelle configurazioni iniziali.
Questa guida ti guiderà attraverso la configurazione di un contenitore phpMyAdmin utilizzando Docker Compose e coprirà ogni scenario per garantire che si connetta correttamente con il tuo database MySQL/MariaDB. Quindi, cominciamo!
Prerequisiti
Prima di procedere con l'installazione, assicurati di avere Docker installato sul tuo sistema. Ma se non ce l’hai, non temere; una qualsiasi delle seguenti guide ti aiuterà a ottenerlo rapidamente. Scegli la distribuzione che stai utilizzando in uno dei seguenti link: Ubuntu 24.04, Debian 12, Arch, Alma/Rocky, Fedora, Linux Mint 22, Pop!_OS 22.04 o Raspberry Pi OS.
L'altro componente essenziale è Docker Compose. Le versioni recenti di Docker ora includono Docker Compose installando il pacchetto "docker-compose-plugin". Quindi, installalo se non è già nella tua configurazione.
Tuttavia, se preferisci, puoi ottenerlo separatamente utilizzando entrambi i comandi seguenti. In tal caso, ricorda, quando esegui lo strumento, digita "docker-compose
" invece di "docker compose
. "
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-linux-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Esegui phpMyAdmin e contenitori MySQL insieme
Questo è lo scenario più comune quando MySQL viene avviato con un contenitore phpMyAdmin associato per amministrare il database. Per raggiungere questo obiettivo, il primo passo è creare la directory del progetto in cui verrà inserito il nostro file di distribuzione Docker Compose.
Quindi passa ad esso; da qui in poi dovrai eseguire tutti i comandi più avanti in questa guida da quella posizione.
mkdir phpmyadmin
cd phpmyadmin
Crea un file denominato "docker-compose.yml". Questo file definirà i servizi e i volumi per le nostre istanze phpMyAdmin e MySQL, indicando a Docker cosa fare e come impostare la distribuzione.
Apri il tuo editor di testo preferito e incolla al suo interno il seguente contenuto:
nano docker-compose.yaml
services:
phpmyadmin:
image: phpmyadmin:latest
container_name: phpmyadmin
ports:
- 8080:80
environment:
- PMA_ARBITRARY=0
- PMA_HOST=db
restart: unless-stopped
depends_on:
- db
db:
image: mysql:latest
container_name: mysql
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: mypassword
restart: unless-stopped
volumes:
- dbdata:/var/lib/mysql
volumes:
dbdata:
Come puoi vedere, la distribuzione è semplice. Implica l'esecuzione di due contenitori: uno per un server MySQL e un altro per l'applicazione phpMyAdmin stessa. Esaminiamo le impostazioni principali.
L'impostazione di "PMA_ARBITRARY" su 0 rimuove l'opzione per inserire un host personalizzato nella schermata di accesso di phpMyAdmin. Questo perché utilizziamo un “db” predefinito specifico a cui il contenitore phpMyAdmin può connettersi.
Il servizio più importante nella parte “phpmyadmin” è “PMA_HOST”. Specifica il nome host del server MySQL a cui phpMyAdmin deve connettersi.
Nella nostra configurazione, tuttavia, poiché MySQL viene eseguito come un altro contenitore all'interno della stessa distribuzione Docker, ci connettiamo ad esso facendo riferimento al nome del servizio, che abbiamo impostato su "db".
Nella parte del server “db” che distribuisce il server MySQL, assicurati di modificare il valore dell'opzione “MYSQL_ROOT_PASSWORD” su uno sicuro. Naturalmente, garantiamo anche la persistenza dei dati MySQL creando un volume Docker denominato.
Siamo tutti pronti! Digita il seguente comando per avviare ed eseguire il contenitore in background:
docker compose up -d
Verrà avviato il download delle immagini Docker. Dovresti vedere una schermata simile a quella qui sotto, che ti informa che la tua installazione phpMyAdmin/MySQL è stata distribuita con successo e che i contenitori sono attivi e funzionanti.
Ora apri il browser e vai a "http://localhost:8080" o "http://
Per accedere, utilizza il nome utente "root" e la password definiti nel file Docker Compose come valori dell'opzione "MYSQL_ROOT_PASSWORD". Questo è tutto! phpMyAdmin si connetterà all'istanza MySQL e sarà pronto a servirti.
Tuttavia, a seconda delle tue esigenze, diamo ora un’occhiata ad alcuni altri casi d’uso di phpMyAdmin che potresti incontrare.
Connetti phpMyAdmin a MySQL installato sull'host
Ma cosa succede se il tuo server MySQL/MariaDB è installato direttamente sull'host e non distribuito come contenitore Docker? In tal caso, il contenitore phpMyAdmin non può vederlo direttamente perché si trova su una rete Docker separata, isolata dalla rete dell'host.
Pertanto, per connettere phpMyAdmin al MySQL installato localmente, dobbiamo effettuare alcune configurazioni aggiuntive, sia sul lato phpMyAdmin che su MySQL. Il file “docker-compose.yml” finale di phpMyAdmin dovrebbe assomigliare a questo:
services:
phpmyadmin:
image: phpmyadmin:latest
container_name: phpmyadmin
ports:
- 8080:80
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
- PMA_ARBITRARY=0
- PMA_HOST=host.docker.internal
restart: unless-stopped
La parte fondamentale qui è l'opzione "host.docker.internal:host-gateway". È un nome DNS speciale riconosciuto da Docker. Si risolve in un indirizzo IP che instrada al computer host, rendendolo particolarmente utile quando è necessario un contenitore per accedere ai servizi in esecuzione sull'host. Maggiori informazioni su questo – qui.
Inoltre, per l'opzione "PMA_HOST", specifica il nome DNS specifico di Docker, "host.docker.internal".
Sul lato MySQL, assicurati che l'opzione “bind-address” sia impostata su “0.0.0.0” e non su “127.0.0.1” nel file di configurazione MySQL. Ciò consente a MySQL di accettare connessioni da qualsiasi indirizzo IP.
Una volta apportate le modifiche, ricordati di riavviare il server MySQL per assicurarti che abbiano effetto. È possibile eseguire il comando seguente per verificare che tutto sia impostato correttamente. Controlla l'output per vedere se la riga MySQL legge "0.0.0.0".
netstat -tulnp
Ora avvia il contenitore phpMyAdmin utilizzando il comando "docker-compose up -d" e accedi utilizzando l'account root per il tuo server MySQL.
Per connetterti correttamente, assicurati che l'utente root o qualsiasi altro utente che stai utilizzando per connetterti al server MySQL tramite phpMyAdmin abbia le autorizzazioni di connessione remota abilitate. Per maggiori dettagli su come gestire gli utenti MySQL, consulta la nostra guida sull'argomento.
Nota importante: le impostazioni sopra menzionate renderanno il tuo server MySQL accessibile da Internet o da reti esterne. Questo generalmente non è sicuro ed è una cattiva pratica di sicurezza.
Per proteggersi dai tentativi di accesso non autorizzati, è importante impostare un firewall che consenta solo connessioni da specifici reti, come la tua interna, e blocca tutte le altre.
Connetti phpMyAdmin a un contenitore MySQL esistente
L'ultimo scenario è quando abbiamo già distribuito un contenitore MySQL/MariaDB e vogliamo aggiungere phpMyAdmin per amministrare il nostro database attraverso una comoda interfaccia grafica. Per raggiungere questo obiettivo, è necessario soddisfare una sola condizione: entrambi i contenitori devono condividere la stessa rete Docker (per essere visibili l'uno all'altro).
Quindi, per prima cosa dobbiamo creare la rete Docker che i due contenitori condivideranno. Puoi crearne facilmente uno chiamato, ad esempio, "mysql_network" eseguendo il seguente comando:
docker network create mysql_network
Per visualizzare un elenco delle reti Docker disponibili, eseguire quanto segue:
docker network ls
Ora, ferma il contenitore MySQL e modifica la sua distribuzione aggiungendo la parte servizio:
networks:
- mysql_network
E definire la rete alla fine di essa. La versione finale dovrebbe essere simile a questa:
services:
db:
image: mysql:latest
container_name: mysql
volumes:
- dbdata:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: mypassword
ports:
- 3306:3306
restart: unless-stopped
networks:
- mysql_network
volumes:
dbdata:
networks:
mysql_network:
name: mysql_network
external: true
Fai lo stesso anche per il contenitore phpMyAdmin e, ovviamente, assicurati di specificare correttamente il nome del servizio MySQL nell'opzione “PMA_HOST”:
services:
phpmyadmin:
image: phpmyadmin:latest
container_name: phpmyadmin
ports:
- 8080:80
environment:
- PMA_ARBITRARY=0
- PMA_HOST=db
restart: unless-stopped
networks:
- mysql_network
networks:
mysql_network:
name: mysql_network
external: true
Ora entrambi i contenitori condivideranno la stessa rete, la "mysql_network" che abbiamo creato in precedenza. Pertanto, avranno visibilità reciproca.
Infine, esegui i contenitori e dovresti accedere senza problemi alla tua istanza MySQL tramite phpMyAdmin.
Conclusione
L'integrazione di phpMyAdmin con Docker offre un approccio semplificato ed efficiente alla gestione dei database MySQL/MariaDB.
Che tu stia distribuendo phpMyAdmin insieme a MySQL nei contenitori Docker, connettendoti a un server MySQL sull'host o integrando con un contenitore MySQL esistente, la nostra guida ti fornisce tutte le risposte di cui hai bisogno per realizzarlo.
Ciò fa risparmiare tempo prezioso e riduce il rischio di errori di configurazione, consentendoti di concentrarti maggiormente sulla gestione del database e meno sulle complessità di configurazione.
Per ulteriori informazioni sulle opzioni disponibili durante la creazione della distribuzione, consulta la documentazione phpMyAdmin e MySQL su Docker Hub.
Grazie per il tuo tempo! Se avete domande, lasciatele nella sezione commenti qui sotto.