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, hogy more a beállított lapozó, amellyel nem lehet felfelé görgetni, és nekünk a szokásos less 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 a less 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 kapunk if [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