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.