Introducció

Arrenca una màquina virtual Linux amb Windows Subsytem for Linux (WSL).

Docker

Crea una carpeta on estaran les dades:

$ mkdir data

Crea un contenidor postgres amb Docker:

$ docker run --rm -d --name db -p 5432:5432 -v $PWD/data:/var/lib/postgresql/data -e POSTGRES_PASSWORD postgres:16

Obre un terminal interactiu executant un client psql:

$ docker exec -it postgres psql -U postgres

Amb l'ordre \l pots veure les bases de dades que té per defecte el gestor de base de dades:

$ \l
                                                List of databases
   Name    |  Owner   | Encoding |  Collate   |   Ctype    | ICU Locale | Locale Provider |   Access privileges   
-----------+----------+----------+------------+------------+------------+-----------------+-----------------------
 postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 |            | libc            | 
 template0 | postgres | UTF8     | en_US.utf8 | en_US.utf8 |            | libc            | =c/postgres          +
           |          |          |            |            |            |                 | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.utf8 | en_US.utf8 |            | libc            | =c/postgres          +
           |          |          |            |            |            |                 | postgres=CTc/postgres
(3 rows)

Crea una base de dades test:

postgres=# create database test;
CREATE DATABASE

Et pots connectar a la base de dades test:

postgres=# \c test 
You are now connected to database "test" as user "postgres".
test=> 

Amb \q pots acabar la sessió:

test=# \q
$

pgAdmin

Utilitzarem Composició de contenidors per desplegar PostgreSQL juntament amb PGAdmin a l'entorn local.

$ mkdir postgres && cd postgres
$ wget https://gitlab.com/xtec/data/postgres/-/raw/main/docker-compose.yml

Si vols, pots editar el fitxer docker-compose.yml i modificar l'usuari i contrasenya:

$ nano docker-compose.yml

Si vols pots configurar més paràmetres del contenidor pgadmin4 tal com s'explica a Container Deployment

Arrenca els contenidors:

$ docker-compose up -d
Creating network "postgres_default" with the default driver
Creating volume "postgres_data" with default driver
Creating volume "postgres_admin" with default driver
Creating postgres_admin_1 ... done
Creating postgres_db_1    ... done

A partir d'ara cada cop que arrenquis la màquina virtual els contenidors arrencaran de manera automàtica.

En qualsevol moment pots comprovar l'estat dels contenidors:

$ docker-compose ps
      Name                    Command              State                     Ports                  
----------------------------------------------------------------------------------------------------
postgres_admin_1   /entrypoint.sh                  Up      443/tcp, 0.0.0.0:80->80/tcp,:::80->80/tcp
postgres_db_1      docker-entrypoint.sh postgres   Up      0.0.0.0:5432->5432/tcp,:::5432->5432/tcp

Ja pots obrir el navegador a http://localhost.

Si no has modificat el fitxer docker-compose.yml l'usuari és alumne i la contrasenya password.

PgAdmin pot administrar bases de dades locals i remotes.

A continuació has de registrar un nou servidor al postgres que s’executa en el localhost:

Configura la connexió.

Si no has modificat el fitxer docker-compose.yml l'usuari és postgres i la contrasenya password.

Scott

Entra dins el contenidor postgres_db_1 i descarrega la base de dades Scott:

$ docker exec -it postgres_db_1 sh
... $ apt update && apt install -y wget
    $ wget https://gitlab.com/xtec/postgres-data/-/raw/main/scott.sql

Importa la base de dades:

... $ cat scott.sql | su postgres -c "psql"
    $ exit

A la pàgina web de PgAdmin selecciona la base de dades Scott i a continuació obre l’eina Query Tool.

Ja pots fer consultes a la base de dades.

En l'activitat Query - Scott tens molts exemples de consultes a la base de dades Scott.

Per saber-ne més