
Persystencja danych z użyciem named volumes
Do tej pory nasza aplikacja działała w kontenerze, ale miała jedną istotną wadę: po usunięciu kontenera traciliśmy wszystkie dane. To normalne, ponieważ kontener jest tymczasowy – kiedy go zatrzymasz i usuniesz, znika także jego system plików.
Rozwiązaniem tego problemu są wolumeny (volumes) w Dockerze. Dzięki nim możemy przechowywać dane w sposób trwały, niezależnie od cyklu życia kontenera.
1. Tworzenie wolumenu
Na początek stwórzmy wolumen o nazwie todo-db
:
docker volume create todo-db
Możesz sprawdzić listę wolumenów poleceniem:
docker volume ls
2. Uruchomienie aplikacji z wolumenem
Teraz uruchomimy naszą aplikację Todo App i zamontujemy wolumen w katalogu /etc/todos
:
docker run -dp 3000:3000 -v todo-db:/etc/todos getting-started
➡️ Dzięki temu wszystkie dane aplikacji (np. zadania na liście) będą zapisywane w wolumenie, a nie tylko w kontenerze.
Dodaj teraz kilka nowych zadań do aplikacji Todo – np. przez interfejs w przeglądarce na http://localhost:3000.
3. Usuwanie kontenera
Zatrzymajmy i usuńmy kontener, aby sprawdzić, co stanie się z danymi.
Najpierw sprawdź uruchomione kontenery:
docker ps
Następnie usuń kontener (najpierw zatrzymując go):
docker stop CONTAINER_ID
docker rm CONTAINER_ID
lub jednym poleceniem:
docker rm -f CONTAINER_ID
4. Uruchomienie nowego kontenera z tym samym wolumenem
Teraz uruchommy aplikację ponownie – z tym samym wolumenem:
docker run -dp 3000:3000 -v todo-db:/etc/todos getting-started
Wejdź do aplikacji w przeglądarce. Zauważysz, że Twoje zadania nadal tam są 🎉 – mimo że stary kontener został usunięty.