2015-10-12 11 views
5

Korzystając z oficjalnego obrazu Docker MySQL, nie rozumiem, jak zamontować katalog danych do określonego punktu na hoście. The Dockerfile obrazu ustawiaObraz MySQL ignoruje konfigurację woluminu docker-compose.yml

VOLUME /var/lib/mysql 

więc baza danych powinny być przechowywane „gdzieś” na komputerze. Chcę być bardziej szczegółowe w moim pliku Döcker-komponować, więc próbowałem następujące:

mysql: 
    image: mysql:5.7 
    environment: 
    - MYSQL_ROOT_PASSWORD=password 
    - MYSQL_DATABASE=mydb 
    volumes: 
    - ./database/mysql:/var/lib/mysql 

Począwszy docker-compose up wszystko działa poprawnie, ale ./database/mysql katalogu na komputerze pozostaje pusty, natomiast/var/lib/mysql w kontenerze zawiera dane. Czy w mojej konfiguracji występuje problem? Czy mogę źle zrozumieć, jak używać woluminów?

Odpowiedz

9

docker-compose zawsze będzie starał się zachować wolumeny danych, aby nie utracić w nich żadnych danych. Jeśli rozpocząłeś od woluminu danych, a następnie zmieniono go na wolumin hosta, nadal możesz uzyskać wolumin danych.

Aby to poprawić, uruchom docker-compose stop && docker-compose rm -f, co spowoduje usunięcie kontenerów i woluminów danych (spowoduje to usunięcie wszystkich danych z woluminów danych). Na następnym docker-compose up powinieneś zobaczyć go używając woluminu hosta.

Edytuj: od wersji Compose 1.6 można uruchomić docker-compose stop -v zamiast dwóch powyższych poleceń.

+0

Masz rację, o to chodzi. Dzięki za rozwiązanie + wyjaśnienie! –

+0

Dzięki! Uratuj mój dzień! –

Powiązane problemy