Tworząc kontener możemy określić dostępne w nim zmienne środowiskowe. Ustawianie zmiennych środowiskowych jest istotnym elementem konfiguracji wielu kontenerów. W tym wpisie zostanie przedstawiony sposób konfiguracji kontenera postgres za pomocą zmiennych środowiskowych.
Ten wpis jest częścią serii wpisów o Dockerze. Jeżeli jakieś pojęcie jest używane bez wyjaśnienia to prawdopodobnie zostało wprowadzone w jednym z wcześniejszych wpisów.
* Zachęcamy również do zapoznania się z odświeżonymi w grudniu 2021 i styczniu 2022 artykułami nt. Dockera, które znajdziecie pod tym wpisem.
W poprzednich częściach serii o Dockerze kilkukrotnie korzystaliśmy z kontenera serwera bazy danych postgres, zawsze logując się do niej za pomocą domyślnego użytkownika. Moglibyśmy stworzyć własnego użytkownika, jego bazę danych i nadać mu odpowiednie uprawnienia za pomocą kilku poleceń wywołanych na kontenerze, ale można to zrobić dużo prościej za pomocą zmiennych środowiskowych.
Dostępne zmienne środowiskowe są opisane na stronie obrazu postgres. Konfigurowanie kontenerów za pomocą zmiennych środowiskowych jest często stosowana praktyką i nie ogranicza się tylko do kontenerów obrazu postgres. Do ustawiania zmiennych środowiskowych w kontenerze służy opcja -e
w poleceniu docker run
.
docker run -e [nazwa]:[wartość] [nazwa obrazu]
Uruchommy kontener obrazu postgres, który będzie tworzył użytkownika o zadanych: nazwie, haśle i nazwie bazy danych. Wykorzystamy do tego następujące zmienne środowiskowe:
- POSTGRES_USER,
- POSTGRES_PASSWORD,
- POSTGRES_DB.
docker run -d -p 6543:5432 -e POSTGRES_USER=docker_user -e
POSTGRES_PASSWORD=docker_pass -e POSTGRES_DB=docker_db postgres
Powinniśmy być w stanie otworzyć interaktywny terminal postgresa za pomocą polecenia:
psql -h localhost -p 6543 -d docker_db -U docker_user --password
lub jeżeli nie chcemy podawać hasła osobno:
PGPASSWORD="docker_pass" psql -h localhost -p 6543 -d docker_db -U docker_user
Proces przetwarzania zmiennych środowiskowych podczas tworzenia kontenera można prześledzić czytając skrypt entrypoint.sh wykorzystywany przez obraz postgres. Jest to jednak temat związany z budowaniem własnych obrazów i powinien zostać omówiony w osobnym wpisie.
* Zaktualizowane w 2021 i 2022 artykuły nt. Dockera
- Docker dla programistów: co to jest?
- Docker dla programistów – budowa pierwszego środowiska. Część I
- Docker dla programistów – budowa środowiska rozwojowego. Część II
- Docker dla programistów – dystrybucja aplikacji
Zostaw komentarz