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

Błąd:import bazy danych Postgres w kontenerze docker

Skonfiguruj montowanie zrzutu bazy danych

Musisz zamontować zrzut w kontenerze, aby mieć do niego dostęp. Coś takiego w docker-compose.yml:

db:
  volumes:
    - './db_dump:/db_dump'

Utwórz lokalny katalog o nazwie db_dump i umieść plik db_dump.gz plik tam.

Uruchom kontener bazy danych

Użyj POSTGRES_DB w środowisku (jak wspomniałeś w swoim pytaniu), aby automatycznie utworzyć bazę danych. Uruchom db sam, bez serwera szyn.

docker-compose up -d db

Importuj dane

Poczekaj kilka sekund, aż baza danych będzie dostępna. Następnie zaimportuj swoje dane.

docker-compose exec db gunzip /db_dump/db_dump.gz
docker-compose exec db psql -U postgres -d dbname -f /db_dump/db_dump.gz
docker-compose exec db rm -f /db_dump/db_dump.gz

Możesz także po prostu utworzyć skrypt, który wykona ten import, wkleić go do obrazu, a następnie użyć pojedynczego polecenia docker-compose, aby to wywołać. Możesz też poprosić skrypt punktu wejścia, aby sprawdził, czy plik zrzutu jest obecny, a jeśli tak, rozpakuj go i zaimportuj... cokolwiek musisz zrobić.

Uruchom serwer rails

docker-compose up -d web

Automatyzacja tego

Jeśli robisz to ręcznie w celu przygotowania nowej konfiguracji, gotowe. Jeśli potrzebujesz zautomatyzować to w łańcuchu narzędzi, możesz to zrobić w skrypcie. Po prostu uruchom kontenery osobno, wykonując import bazy danych pomiędzy nimi i użyj sleep na pokrycie wszelkich opóźnień uruchamiania.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można połączyć się z bazą danych PostgreSQL na Heroku za pomocą Rubiego - nie można przetłumaczyć nazwy hosta

  2. Krotka do listy — typ zwracania rekordu SETOF w Pythonie / PostgreSQL

  3. Odpowiednik strftime w Postgres

  4. Wymusić instalację Postgresa z kodowaniem UTF8, a nie LATIN1?

  5. Czy możesz utworzyć indeks w definicji CREATE TABLE?