PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Uruchom skrypt za punktem wejścia kontenera w docker-compose

Zastępujesz oryginalne command i nie uruchamiasz postgresa w tym skrypcie, dlatego Twoja baza danych jest niedostępna.

Możesz umieścić inicjalizację bazy danych w katalogu punktu wejścia kontenera:/docker-entrypoint-initdb.d . To wykonuje wszystkie *.sh i *.sql pliki w tym katalogu i nie dotyka oryginalnego command .
Wszystkie pliki w tym katalogu są automatycznie wykonywane w kolejności alfabetycznej podczas tworzenia kontenera . Dlatego utwórz wolumin, aby dodać swoje skrypty / pliki sql do punktu wejścia i pozwól kontenerowi je wykonać. Jest to opisane w oficjalnej dokumentacji postgres, sekcja "Jak rozszerzyć ten obraz" .

Twój plik do tworzenia zmienia się wtedy na coś takiego:

postgres:
  build: ./postgres
  volumes:
    - /shared_folder/postgresql:/var/lib/postgresql
    - ./db-init-scripts:/docker-entrypoint-initdb.d
  ports:
    - "5432:5432"

natomiast katalog lokalny, np. db-init-scripts , zawiera twoje skrypty inicjujące (zmień ich nazwę, jeśli chcesz). Skopiuj create_db.sh do tego folderu i zostanie on automatycznie wykonany po utworzeniu nowego kontenera.

Kilka obrazów bazy danych obserwuje ten katalog-punkt wejścia, co jest bardzo wygodne.

Twój container_name: postgres wydaje się zbędne.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. postgres i pyton

  2. Iteracja przez rekordy PostgreSQL. Jak odwołać się do danych z następnego wiersza?

  3. Rozszerzanie wiersza za pomocą * nie jest tutaj obsługiwane

  4. Jak modelować pakiety, wersje i licencje?

  5. Błąd podczas próby uruchomienia pgAdmin4