Stronę tą wyświetlono już: 507 razy
Skoro omówiony został temat komunikacji pomiędzy kontenerami to czas najwyższy zrobić coś w temacie zachowywania zmian zachodzących w bazie danych. Ponieważ w tej chwili po dodaniu rekordów do bazy danych i usunięciu kontenera bazy danych MongoDb a następnie uruchomieniu nowej instancji tejże bazy dane są tracone, co w moim osobistym odczuciu nie wróży nic dobrego. Dlatego teraz, gdy utworzony został nieco bardziej złożony przykład użycia kontenerów można rozważyć wykorzystanie volumen-u nazwanego do przechowywania stanu bazy danych i odzyskiwania go.
W tym niecnym celu warto zerknąć do dokumentacji mongodb.com/compatibility/docker, gdzie można przeczytać:
Any data created as part of the lifecycle of that container will be destroyed once the container is deleted. If you want to persist the data on your local machine, you can mount a volume using the -v argument. docker run --name mongodb -d -v YOUR_LOCAL_DIR:/data/db mongo
Tak więc podczas tworzenia wystarczy podać nazwę lub ścieżkę bezwzględną do folderu, który będzie przechowywał stan bazy danych. Ja zadowolę się tym razem nazwą:
docker run -d --network net-wishes --name mongodb --rm -v mongo-wishes:/data/db mongo
W celu ułatwienia sobie życia ja zawsze tworzę pliki .sh, które używam do usuwania i uruchamiania. Tak więc np. w pliku run.sh mam polecenia:
natomiast w stop.sh:
Nieco później pokażę konfigurację uruchamiania kontenerów w znacznie bardziej przyjazny sposób co spowoduje, że powyższe pliki nie będą już potrzebne.
Teraz należy przetestować, czy zadziałało dodając kilka rekordów Postman-em a następnie usuwając kontenery i stawiając je na nowo.