Le seguenti istruzioni permettono di istanziare due Docker container collegati tra loro contenenti:
- il DBMS PostgreSQL
- PGAdmin4
PGAdmin4 è una interfaccia web che consente di amministrare in modo semplificato un server PostgreSQL, scrivere ed eseguire query e file di comandi SQL utilizzando un qualunque browser web.
Queste istruzioni permetteranno di installare Docker, i container e di creare una shared folder fra l'host e i container.
- Una macchina con sistema operativo Linux o MacOS. Attualmente Windows non è supportato.
- Bisogna avere i permessi di root e avere disponibili le porte 5000 (PGAdmin4) e 5432 (PostgreSQL). (Le porte esposte dai container verso la macchina host possono essere modificate editando il file
.env
). - Docker, docker-compose e git installati. Per la loro installazione, si seguano le istruzioni in base al proprio sistema operativo.
-
Aprire una shell
-
Posizionarsi nella directory dove si vuole installare il tutto (ad es.,
$HOME/bd2/
). Da qui in poi, chiameremo questa directory$BASE_DIR
.cd "$BASE_DIR"
-
Scaricare questo repository nella directory corrente. Per scoprire il comando da utilizzare:
- cliccare il pulsante "Clone" in alto in questa pagina;
- scegliere il metodo "https" dal menu, copiare il comando mostrato (
git clone https://...
); - incollare il comando nella shell aperta.
-
Avviare il docker container:
docker compose up -d
Alla prima esecuzione, il comando scaricherà da Internet le ultime versioni di PostgreSQL e PGAdmin4 e avvierà i due server.
In caso di errori durante l'esecuzione di PGAdmin4 assicurarsi di avere i permessi sulla cartella del repository clonato tramite il comando sudo chmod 777 -R .
, chiudendo eventuali container attivi con docker-compose down
e riavviandoli con docker-compose up -d
- Eseguire l'accesso tramite il browser all'indirizzo http://localhost:5000 (la propria installazione di PGAdmin4; ovviamente usare il numero di porta corretto se modificato nel file
.env
). In caso PGAdmin4 non dovesse rispondere, fare riferimento alla sezione "Esecuzione dei test". - Effettuare il login usando le credenziali riportate nella sezione "Credenziali"
- Nella dashboard cliccare su 'Add new server'
- Nella tab 'General' nel campo Name scrivere 'postgres'
- Cambiare tab e scegliere 'Connection'
- Nel campo Host name / address scrivere:
postgres
- Nel campo port se non presente scrivere:
5432
- Nel campo Maintenance database scrivere:
postgres
- Nel campo username scrivere
postgres
- Nel campo password scrivere:
postgres
- Spuntare la casella "Save password"
I container sono già configurati con le seguenti credenziali.
- user:
[email protected]
- password:
admin
- user:
postgres
- password:
postgres
Per controllare che tutto sia andato a buon fine:
-
Assicurarsi che i container
pgadmin_container
epostgres_container
siano attivi (nello stato "up") mediante il comando:docker container ls -a
-
Puntare il proprio browser alla URL http://localhost:5000 (la propria installazione di PGAdmin4; ovviamente usare il numero di porta corretto se modificato nel file
.env
) ed assicurarsi che venga correttamente caricata la pagina di login di PGAdmin4. -
Effettuare il login in PGAdmin4 e assicurarsi che vi sia il server di postgres sotto il menu Servers nella barra laterale sinistra. Se così non fosse, ricontrollare i passi nella sezione "Configurazione PGAdmin4".
La sottodirectory postgresData
di $BASE_DIR
è visibile all'interno del container docker di PostgreSQL.
Questa directory conterrà i file di configurazione e i database PostgreSQL, che resteranno dunque persistenti anche in caso di interruzione del servizio Docker, o della rimozione dei container.
E' possibile avviare il comando psql
per accedere alla shell di PostgreSQL mediante:
docker exec -it postgres_container psql -U postgres
-
Per fermare l'esecuzione di PostgreSQL e di PGAdmin4 usare il comando:
docker compose stop
-
Per avviare l'esecuzione di PostgreSQL e di PGAdmin4 usare il comando:
docker compose start
-
Per reinstallare i docker container di PostgreSQL e di PGAdmin4 usare il comando:
docker compose down docker compose up -d
I dati (ad es., il contenuto dei propri database) resteranno salvati nella cartella $BASE_DIR. Ai successivi avvii, docker utilizzerà le immagini dei container PostgreSQL e di PGAdmin4 scaricate in precedenza.
Si rinvia alla documentazione di Docker per gli usi più avanzati.
- Marco Esposito (LASTNAME AT di.uniroma1.it)
- Andrea Bacciu Github profile
- Valerio Neri Github profile
- Docker: docker.com
- PostgreSQL: postgresql.org
- pgadmin4: pgadmin.org