2017-02-15 12 views
11

Chcę poznać odpowiednik poniższej konfiguracji, aby pasował do wersji 3 programu docker-composer.yml! volume_from nie jest już poprawny, więc czy powinienem pominąć wolumin danych i zamienić go na woluminy najwyższego poziomu?Jak zmienić wolumin_from w docker-composer v3

version: '2' 
services: 

    php: 
    build: ./docker-files/php-fpm/. 
    volumes_from: 
     - data 
    working_dir: /code 
    links: 
     - mysql 

    nginx: 
    image: nginx:latest 
    ports: 
     - "80:80" 
    volumes: 
     - ./nginx/default.conf:/etc/nginx/conf.d/default.conf 
    volumes_from: 
     - data 
    links: 
     - php 

    data: 
    image: tianon/true 
    volumes: 
     - .:/code 

Odpowiedz

7

Domyślnie określone woluminy umożliwiają współdzielenie danych między kontenerami. Ale są pewne problemy z przechowywaniem danych w tym samym miejscu na komputerze hosta po ponownym uruchomieniu kontenerów. Ale możemy użyć wtyczki local-persist do naprawy.

migracji do wersji 3 trzeba

1) Instalacja local-persist Döcker wtyczki (jeśli chcesz przechowywać dane woluminów do konkretnego miejsca na maszynie hosta)

2) modyfikować docker-compose.yml

version: '3' 
services: 

    php: 
    build: ./docker-files/php-fpm/. 
    volumes: 
     - data:/code 
    working_dir: /code 
    links: 
     - mysql 

    nginx: 
    image: nginx:latest 
    ports: 
     - "80:80" 
    volumes: 
     - ./nginx/default.conf:/etc/nginx/conf.d/default.conf 
    volumes: 
     - data:/code 
    links: 
     - php 

    data: 
    image: tianon/true 
    volumes: 
     - data:/code 

# If you use local persist plugin 
volumes: 
    data: 
    driver: local-persist 
    driver_opts: 
     mountpoint: /path/on/host/machine/ 

# Or If you dont want using local persist plugin 
volumes: 
    data: 

Ponadto można przechowywać ilości danych do komputera hosta z tej części objętości:

volumes: 
    data: 
    external: true #< it means store my data to the host machine 

Ale nie można określić ścieżkę dla tego woluminu na maszynie hosta

+0

Ok, ale dane: usługa nie posiada funkcji dłużej? Czy są jakieś minusy, po prostu udostępnij bezpośrednio wolumin hosta? Podobnie jak 'woluminów:.:/Code' – prometheus

+1

potrzebujesz pojemnika danych tylko wtedy, gdy ten pojemnik zawiera dane wewnątrz siebie. w takim przypadku możesz po prostu wykonać kopię zapasową tych danych, przenieść kontener (z danymi) do innego hosta. To jest [tylko wzorzec kontenera danych] (http://container42.com/2013/12/16/persistent-volumes-with-docker-container-as-volume-pattern/). Ale jeśli chcesz zastosować inne podejście: przechowuj dane na komputerze hosta, a pojemnik danych jest niepotrzebny –

+5

instalowanie wtyczek firm trzecich w celu uzyskania podstawowych funkcji (takich jak posiadanie określonego punktu podłączenia na hoście) jest niedopuszczalne, gdy chcesz udostępnić swoją konfigurację innym użytkowników. Jestem bardzo zawiedziony przez programistów pracujących w docku za pozostawieniem tej podstawowej funkcji poza wersją docker-compose 3 – chefarov

Powiązane problemy