Docker
Il y a une image officielle pour PostgreSQL. Les versions de l’image suivent celles de la base de données.
docker pull postgres
# ou
docker pull postgres:15.1
Pour y accéder de l’extérieur, il faut ouvrir le port 5432.
Le mot de passe peut être passé en variable d’environnement POSTGRES_PASSWORD.
Pour stocker les données à l’extérieur du conteneur, il faut mettre le répertoire /var/lib/postgresql/data
en volume.
On peut ajouter des scripts d’initialisation (*.sql, *.sh) dans le répertoire /docker-entrypoint-initdb.d
.
docker run --name pg-server --rm \
--volume pg-data:/var/lib/postgresql/data \
--volume $(pwd)/init:/docker-entrypoint-initdb.d \
--env POSTGRES_PASSWORD=password \
--network db \
--publish 5432:5432 \
--detach postgres
La même image contient le client psql.
docker run -it --rm --network db postgres psql -h pg-server -U postgres
Extensions
uuid-ossp permet de générer des UUID en version 4.
CREATE EXTENSION "uuid-ossp" SCHEMA public;
SELECT uuid_generate_v4();
CREATE TABLE my_table (
id uuid DEFAULT uuid_generate_v4() NOT NULL,
...
)
Citus est une extension à PostgreSQL pour en faire une base de données distribuée.