Configurare PostgreSQL e PGAdmin su docker
In questo tutorial, vedremo come installare PostgreSQL e PGAdmin su Docker.
Eseguiremo un Docker container per PotsgreSQL ed un docker container per PGAdmin, scaricando le versioni ufficiali rilasciate sul DockerHub. Le stesse esecuzioni possono essere fatte tramite Dockerfile ma queste non rientrano nel perimetro di questo tutorial.
Per prima cosa, quindi, eseguiremo un container con il database PostgreSQL
usando l'immagine pubblica PostgreSQL.
Successivamente vedremo come accedere al database presente sul container creato
da riga di comando usando psql
. Proseguiremo con la creazione di un container
sul quale installeremo PGAdmin e lo connetteremo al database PostgreSQL
presente su un differente container. Per ultima cosa vedremo come eseguire il
backup di un database creato sul container di PostgreSQL.
Cos'è PostgreSQL
PostgreSQL è un Open-Source RDBMS tra i più performanti ed utilizzati. PostgreSQL è un database object-oriented, che consente di memorizzare informazioni strutturate e semi-strutturate.
PostgreSQL può essere eseguito su diverse piattaforme, come Linux, Mac OS X, Windows. Esso fornisce tipi di dato avanzati e consente l'ottimizzazione delle performance per memorizzare e scalare complicati carichi applicativi.
Configurare PostgreSQL su Docker
1. Download immagine
Per eseguire PostgreSQL su Docker, per prima cosa dobbiamo scaricare (pull
)
l'immagine pubblica di PostgreSQL dal
DockerHub:
docker pull postgres
Nel comando precedente, andremo a scarica l'ultima versione presente
(latest
). Tuttavia, potremo scaricare una specifica versione specificandola
nel comando:
docker pull postgres:14.2
In questo caso avremo scaricato la versione 14.2
.
2. Esecuzione del container
Una volta scaricata l'immagine possiamo eseguire l'immagine con il seguente comando:
docker run -itd -e POSTGRES_USER=scrivocodice -e POSTGRES_PASSWORD=scrivocodice -p 5432:5432 -v /data:/var/lib/postgresql/data --name postgresql postgres
Il precedente comando utilizza le variabili d'ambiente POSTGRES_USER
e
POSTGRES_PASSWORD
per impostare il nome utente e la password da utilizzare
sul database PostgreSQL. La porta utilizzata dal database è la 5432
come
specificato dall'opzione -p
. Il comando inoltre esegue un backup della
directory remota /data
, presente nel container docker, sulla cartella locale
/var/lib/postgresql/data
.
3. Accesso tramite psql
Per poter accedere ed utilizzare il database utilizzeremo il comando psql
. Per accedere al comando eseguire:
docker exec -it b0b9d37a3a9f psql -U scrivocodice
Il comando apre la shell del comando sul quale potremo eseguire i comandi SQL.
Installare pgAdmin su Docker
Avendo seguito il tutorial, in questo momento avrai installato il container
contenente PostgreSQL attivo ed in esecuzione sulla porta 5432
.
Passiamo all'installazione di pgAdmin, applicativo web che consente di configurare ed interrogare database PostgreSQL.
Per scarica l'immagine eseguiamo:
docker pull dpage/pgadmin4:latest
Per eseguire l'applicativo eseguiamo:
docker run --name pgadmin -p 5051:80 -e "PGADMIN_DEFAULT_EMAIL=prova@scrivocodice.it" -e "PGADMIN_DEFAULT_PASSWORD=scrivocodice" -d dpage/pgadmin4
Il comando avvia l'esecuzione dell'applicazione web che risulta accessibile, dal pc locale all'indirizzo:
http://localhost:5051
La porta è la 5051
poiché attraverso il comando abbiamo accoppiato la porta
del pc locale 5051
con la porta 80 del container.
Possiamo accedere al backoffice del pgAdmin utilizzando l'indirizzo email e la password impostate sul comando.
Una volta eseguito l'accesso potrai notare che non è presente alcun server associato all'applicazione pgAdmin. Per associare il server PostgreSQL gestito dal container creato in precedenza dobbiamo aggiungere il server sul pgAdmin.
Per impostare il server, oltre alle informazioni di username e password (configurate e utilizzate precedentemente), dobbiamo specificare l'indirizzo IP del container che ospita PostgreSQL.
Per capire quale sia l'indirizzo IP attribuito al container PostgreSQL eseguire il seguente comando:
docker inspect <container_id> | grep IPAddress
dove container_id
è l'id attribuito al container PostgreSQL (visualizzabile tramite comando docker ps
).
A questo punto l'indirizzo IP ottenuto può essere inserito sul pgAdmin per aggiungere il server.
Conclusioni
In questo articolo abbiamo visto come installare e configurare PostgreSQL e pgAdmin utilizzando due container docker separati. I container creati comunicano attraverso l'interfaccia pgAdmin.
A questo punto potrai eseguire comandi SQL sia tramite il comando psql
che
tramite pgAdmin
.