Onnan indulunk, hogy van egy Postgres dev-környezetünk.
Példa problémák:
- Ha a konténerbeli
psql
klienst rendszeresen használjuk, feltűnhet, hogymore
a beállított lapozó, amellyel nem lehet felfelé görgetni, és nekünk a szokásosless
kéne helyette. Ezt a$PAGER
környezeti változó segítségével könnyen megoldhatnánk, ám ha megpróbáljuk, kiderül, hogy a postgres Docker image nem tartalmazza aless
programot, mert a végletekig lecsupaszították. - Ugyancsak a
psql
kliens használata során tűnhet fel, hogy fölösleges notice üzeneteket kapunkif [not] exists
DDL-műveleteknél. Ezektől meg akarunk szabadulni.
Nézzük, mit tehetünk ilyen esetekben. Hozzuk létre a ./docker/postgres/Dockerfile
fájlt:
FROM postgres:16
RUN apt-get update && apt-get install -y less
ENV PAGER="/usr/bin/less -S"
CMD ["-c", "client_min_messages=warning"]
Majd módosítsuk a docker-compose.yml
konfigfájlt úgy, hogy a repóból letöltött image helyett ezt használja (lásd image helyett a build paramétert).
services:
db:
container_name: postgres
build: ./docker/postgres
# Dockerfile CMD helyett így is lehetne argumentumokat átadni:
# command: ["-c", "client_min_messages=warning"]
environment:
# Dockerfile ENV helyett így is lehetne környezeti változót beállítani:
# PAGER: "/usr/bin/less -S"
# stb...
Ne feledjük, ha változtatunk a Dockerfile-on, újra kell építeni az image-et:
$ docker compose up -d --build