Configurare PostgreSQL e PGAdmin su docker

Thu 09 March 2023

In questo tutorial, vedremo come installare PostgreSQL e PGAdmin su Docker.

Solitamente, 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 tramite immagine pubblica su Docker

Download immagine pubblica

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.

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.

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.