Docker - czas zastosować volumen nazwany w celu zachowania stanu bazy danych

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 408 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:

docker run -d --network net-wishes --name mongodb --rm -v mongo-wishes:/data/db mongo docker run -p 8889:8888 --name node -v "${pwd}:/app" --network net-wishes --rm -d node-api:1.0

natomiast w stop.sh:

docker container stop mongodb docker container stop node

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.

Propozycje książek
tytuł: Kubernetes i Docker w środowisku produkcyjnym przedsiębiorstwa. Konteneryzacja i skalowanie aplikacji oraz jej integracja z systemami korporacyjnymi autor: Scott Surovich, Marc Boorshtein

Tytuł:

Kubernetes i Docker w środowisku produkcyjnym przedsiębiorstwa. Konteneryzacja i skalowanie aplikacji oraz jej integracja z systemami korporacyjnymi

Autor:

Scott Surovich, Marc Boorshtein

tytuł: Bezpieczeństwo kontenerów w DevOps. Zabezpieczanie i monitorowanie kontenerów Docker autor: Jose Manuel Ortega Candel

Tytuł:

Bezpieczeństwo kontenerów w DevOps. Zabezpieczanie i monitorowanie kontenerów Docker

Autor:

Jose Manuel Ortega Candel

tytuł: Docker dla programistów. Rozwijanie aplikacji i narzędzia ciągłego dostarczania DevOps autor: Richard Bullington-McGuire, Michael Schwartz, Andrew K. Dennis

Tytuł:

Docker dla programistów. Rozwijanie aplikacji i narzędzia ciągłego dostarczania DevOps

Autor:

Richard Bullington-McGuire, Michael Schwartz, Andrew K. Dennis

tytuł: Docker dla praktyków. Wydanie II autor: Jeeva S. Chelladhurai, Vinod Singh, Pethuru Raj

Tytuł:

Docker dla praktyków. Wydanie II

Autor:

Jeeva S. Chelladhurai, Vinod Singh, Pethuru Raj

W związku z tym, że firma Helion nie wywiązuje się z swoich zobowiązań naliczania prowizji za każdą zakupioną książkę a kontakt z ową frmą jest nie możliwy autor strony zmuszony został do zablokowania linkowania książek. Za wszelkie niedogodności z tym związane z góry przepraszam i obiecuję włączenie linkowania gdy tylko sprawa zostanie wyjaśniona

Załączniki:

Server przygotowany do komunikacji przez sieć kontenera z kontenerem bazy danych MongoDb o nazwie mongodb