MySQL (i jego warianty, takie jak Percona Server) zapewniają funkcję inicjowania bazy danych przy pierwszym uruchomieniu kontenera, opisaną w sekcji „Inicjowanie nowej instancji” w strona centrum dokowania .
Plik Dockerfile wykorzystujący tę technikę będzie wyglądał jak
FROM mysql:8
COPY seed-data.sql /docker-entrypoint-initdb.d/
Uwaga:końcowy ukośnik katalogu jest ważny.
Kiedy docker run
ten obraz, docker utworzy kontener, docker-entrypoint.sh -entrypoint.sh
wykona skrypt sql, a następnie kontener będzie gotowy do obsługi danych.
Dane zostaną zachowane po ponownym uruchomieniu kontenera — dane początkowe i późniejsze modyfikacje.
Możesz ponownie użyć kontenera, aby przyspieszyć uruchamianie — kolejne uruchomienia kontenera nie będą wymagały inicjowania bazy danych ani inicjowania danych. Gdy potrzebujesz nieskazitelnych danych, usuń kontener i docker run
obraz ponownie.
Podczas usuwania kontenera pamiętaj o usunięciu woluminu dockera zawierającego dane bazy danych:docker rm -v $CONTAINER_NAME
.
Używam tej metody, aby dostarczyć standardowe dane dla POC języka / frameworka, a także CI/CD. Inicjowanie nowej bazy danych i umieszczanie dużych ilości danych może zająć kilka minut, więc będziesz potrzebować pewnej logiki, aby wstrzymać automatyczne operacje, dopóki nie uda się nawiązać połączenia z bazą danych.
Mam nadzieję, że to pomoże ci w drodze.