PHPMyAdmin è una popolare interfaccia di amministrazione per i database MySQL e MariaDB. Ti consente di interagire con schemi, tabelle e dati utilizzando un browser web.
Il progetto ha un'immagine Docker ufficiale che semplifica la distribuzione in ambienti containerizzati. Ecco come utilizzare l'immagine per avviare rapidamente una nuova istanza PHPMyAdmin.
Utilizzo di base
L'installazione più semplice consente a un contenitore PHPMyAdmin di connettersi a qualsiasi server di database accessibile:
docker run -d --name phpmyadmin -e PMA_ARBITRARY=1 -p 8080:80 phpmyadmin
Questo comando avvia PHPMyAdmin sulla porta 8080. Visita localhost:8080
nel tuo browser per vedere la schermata di accesso. La presenza del PMA_ARBITRARY
la variabile di ambiente comporta la visualizzazione di un modulo di connessione al server. Specifica le credenziali dell'host e dell'utente del tuo database MySQL o MariaDB per accedere.
Quando utilizzi questo metodo, normalmente vedrai un avviso PHPMyAdmin che "alcune funzionalità estese sono state disattivate". Ciò si verifica quando il server a cui sei connesso non ha un database chiamato phpmyadmin
. PHPMyAdmin utilizza questo schema per memorizzare i propri dati di configurazione.
Segui il collegamento dell'avviso a "Crea un database" per completare l'installazione. Il tuo account utente avrà bisogno dell'autorizzazione per creare nuovi database sul server.
Preimpostazione di un server
In alternativa a consentire l'accesso arbitrario, puoi avviare il contenitore PHPMyAdmin con una connessione al server preconfigurata. Fornisci il PMA_HOST
e PMA_PORT
variabili di ambiente invece di PMA_ARBITRARY
:
docker run -d --name phpmyadmin -e PMA_HOST=mysql.example.com -e PMA_PORT=33060 -p 8080:80 phpmyadmin
PMA_PORT
è facoltativo. Utilizzerà l'impostazione predefinita MySQL di 3306 quando non viene fornito alcun valore.
L'avvio del contenitore con queste variabili costringerà PHPMyAdmin a lavorare con mysql.example.com
server. Ti verrà richiesto un nome utente e una password nella schermata di accesso, ma non sarà necessario fornire un nome host.
PHPMyAdmin può anche essere configurato per presentare più opzioni del server. Fornisci PMA_HOSTS
e PMA_PORTS
come elenchi di connessioni separati da virgole per abilitare questa funzionalità.
Utilizzo di un MySQL Docker Container
Un altro caso d'uso comune è la connessione a un server MySQL o MariaDB in esecuzione in un contenitore Docker separato. Puoi esporre il server di database su una porta o connettere entrambi i container a una rete Docker condivisa. In entrambi i casi, usa il PMA_HOST
e PMA_PORT
le variabili di ambiente indicheranno a PHPMyAdmin come connettersi al server.
Sono supportati anche i collegamenti Docker legacy:
docker run -d --name phpmyadmin --link my_mysql_container:db -p 8080:80 phpmyadmin
Questo comando ti consente di connettere PHPMyAdmin a my_mysql_container
contenitore senza configurare manualmente i collegamenti di rete. Questa funzionalità è deprecata in Docker, sebbene sia preferibile passare ai comandi di rete:
docker network create phpmyadmin docker network connect phpmyadmin mysql_container_name --ip 172.17.0.1 docker network connect phpmyadmin phpmyadmin_container_name
In alternativa, puoi avviare PHPMyAdmin con una connessione di rete preconfigurata utilizzando --network
di Docker bandiera:
docker run -d --name phpmyadmin --network phpmyadmin -p 8080:80 phpmyadmin
Ora PHPMyAdmin sarà in grado di raggiungere il container MySQL tramite la rete condivisa. Imposta il PMA_HOST
variabile di ambiente su 172.17.0.1
quando avvii il contenitore.
Semplificazione della distribuzione con Docker Compose
La scrittura di un file Docker Compose semplifica le distribuzioni non banali. Puoi aprire un nuovo contenitore PHPMyAdmin in modo ripetibile usando il docker-compose up -d
comando.
Ecco un docker-compose.yml
per PHPMyAdmin in modalità di connessione arbitraria:
version: "3" services: phpmyadmin: image: phpmyadmin:latest ports: - 8080:80 environment: - PMA_ARBITRARY=1 restart: unless-stopped
Docker Compose ti aiuta anche a creare uno stack con una nuova installazione di database MySQL e un contenitore PHPMyAdmin:
version: "3" service: mysql: image: mysql:latest expose: - 3306 environment: - MYSQL_ROOT_PASSWORD volumes: - mysql:/var/lib/mysql restart: unless-stopped phpmyadmin: image: phpmyadmin:latest ports: - 8080:80 environment: - PMA_HOST: mysql - PMA_PASSWORD: ${MYSQL_ROOT_PASSWORD} restart: unless-stopped volumes: - mysql
Esegui docker-compose up -d
per far apparire MySQL con un container PHPMyAdmin completamente connesso in rete. PMA_HOST
di PHPMyAdmin la variabile è impostata su mysql
, facendo riferimento al nome del servizio MySQL. Docker Compose imposta automaticamente i nomi host in modo che corrispondano ai nomi dei servizi, consentendo a PHPMyAdmin di connettersi a MySQL utilizzando la rete condivisa.
Configurazione dell'installazione
L'immagine PHPMyAdmin Docker supporta un file di configurazione fornito dall'utente che è possibile iniettare tramite un volume Docker. Il percorso è /etc/phpmyadmin/config.user.inc.php
:
docker run -d --name phpmyadmin -e PMA_ARBITRARY=1 -p 8080:80 -v my-config-file.php:/etc/phpmyadmin/config.user.inc.php phpmyadmin
Puoi aggiungere una qualsiasi delle variabili di configurazione supportate da PHPMyAdmin.
L'immagine supporta anche le variabili di ambiente per molte impostazioni comuni. Questi includono MEMORY_LIMIT
, UPLOAD_LIMIT
e MAX_EXECUTION_TIME
, ognuno dei quali corrisponde a valori PHP INI che potrebbero dover essere modificati se utilizzi query complicate o di lunga durata.
Valori sensibili, come PMA_HOST
, PMA_PASSWORD
e MYSQL_ROOT_PASSWORD
, può essere iniettato utilizzando i segreti Docker invece di semplici variabili di ambiente. Aggiungi _FILE
al nome della variabile, quindi imposta il valore su un percorso all'interno del contenitore che fornisce il valore effettivo.
docker run -d --name phpmyadmin -e PMA_HOST_FILE=/run/secrets/pma_host -p 8080:80 phpmyadmin
Riepilogo
PHPMyAdmin è una delle utilità di amministrazione MySQL più popolari e conosciute. L'installazione bare metal aggiunge diverse dipendenze al tuo sistema, raggruppando Apache e PHP insieme al codice sorgente dell'app.
L'installazione di PHPMyAdmin in Docker offre un ambiente isolato che può essere creato, sostituito ed eliminato utilizzando una manciata di comandi Docker CLI. L'immagine ufficiale può connettersi a qualsiasi server MySQL accessibile dal tuo host, inclusi i database in esecuzione in altri contenitori Docker.
Una guida più dettagliata sull'esecuzione e l'utilizzo di PHPMyAdmin può essere trovata nella documentazione ufficiale. È particolarmente importante rivedere la guida alla sicurezza in modo da non lasciare involontariamente il database a rischio di attacco esterno. Dovresti anche considerare le migliori pratiche di sicurezza Docker quando distribuisci PHPMyAdmin all'interno di un container esposto al mondo esterno.