2016-12-23 14 views
5

Jestem nowy w Docker i próbuję dowiedzieć się, jak ustawić nazwę utworzonego woluminu danych. Obecnie katalog jest automatycznie nazywany długim hashiem w/var/libs/docker, co jest dalekie od przyjaznego dla użytkownika.Jak nazwać wolumin przy użyciu pliku docker-compose.yml?

Ja próbuje skonfigurować środowisko programistyczne dla MODx jak pokazano tutaj: https://github.com/modxcms/docker-modx

Obecnie mój plik doker-compose.yml się następująco:

web: 
    image: modx 
    links: 
    - db:mysql 
    ports: 
    - 80:80 
db: 
    image: mysql 
    environment: 
    MYSQL_ROOT_PASSWORD: example 
    ports: 
    - 3306:3306 
    command: mysqld --sql-mode=NO_ENGINE_SUBSTITUTION 
myadmin: 
    image: phpmyadmin/phpmyadmin 
    links: 
    - db:db 
    ports: 
    - 8080:8080 

Działa to doskonale, ale nie jestem pewien, jak nazwać ilość danych, którą chciałbym edytować bezpośrednio za pomocą mojego IDE.

(jako pytanie z boku, czy ma zostać utworzony w katalogu/var/libs/docker Albo czy jest jakiś sposób na ustawienie go do katalogu w moim katalogu domowym?)

Aktualizacja: Dzięki pomocy z @juliano zaktualizowałem mój plik Döcker-compose.yml do:

version: '2' 

services: 
    web: 
     image: modx 
     volumes: 
     - html:/home/muzzstick/dev/modxdev 
     links: 
     - db:mysql 
     ports: 
     - 80:80 
    db: 
     image: mysql 
     environment: 
     MYSQL_ROOT_PASSWORD: example 
     ports: 
     - 3306:3306 
     command: mysqld --sql-mode=NO_ENGINE_SUBSTITUTION 
    myadmin: 
     image: phpmyadmin/phpmyadmin 
     links: 
     - db:db 
     ports: 
     - 8080:8080 

volumes: 
    html: 
     external: false 

Niestety wydaje się zatrzymać pojemnik internetowej z systemem. Kontenery db i myadmin pokazują, że działają poprawnie. Nie było żadnych błędów ... jeśli wpiszę docker start docker_web_1, zacznie się wyświetlać, ale docker ps -a pokazuje, że zostało zakończone zaraz po uruchomieniu.

Aktualizacja 2

Running docker-compose up -d wydaje się działać bez problemu. Ale potem, jak widać poniżej, kontener internetowy kończy działanie zaraz po utworzeniu.

CONTAINER ID  IMAGE     COMMAND     CREATED    STATUS      PORTS       NAMES 
a1dd6d8ac94e  modx     "/entrypoint.sh apach" 10 seconds ago  Exited (1) 5 seconds ago         docker_web_1 
ee812ae858dc  phpmyadmin/phpmyadmin "/run.sh phpmyadmin"  10 seconds ago  Up 5 seconds    80/tcp, 0.0.0.0:8080->8080/tcp docker_myadmin_1 
db496134e0cf  mysql     "docker-entrypoint.sh" 11 seconds ago  Up 10 seconds    0.0.0.0:3306->3306/tcp   docker_db_1 

Aktualizuj 3 ok dzienników błędów dla tego kontenera Wystawy:

error: missing MODX_DB_HOST and MYSQL_PORT_3306_TCP environment variables 
Did you forget to --link some_mysql_container:mysql or set an external db 
with -e MODX_DB_HOST=hostname:port? 

Ten błąd pojawia się pochodzący z https://github.com/modxcms/docker-modx/blob/master/apache/docker-entrypoint.sh#L15-L20

Może to być coś takiego powiązania jest traktowane inaczej w doker-compose wersja 2?

+0

Co się stanie, gdy uruchomisz 'docker-compose up'? –

+0

Wyciąga różne obrazy zgodnie z oczekiwaniami i tworzy pojemniki. Ale kontener internetowy kończy działanie niemal natychmiast, jak widać w mojej aktualizacji powyżej. – Muzzstick

Odpowiedz

8

Aby utworzyć nazwie woluminu danych przy użyciu version 2 of compose files trzeba będzie obszar wydzielony:

version: '2' 

services: 
    db: 
    image: postgres 
    volumes: 
     - amazingvolume:/var/lib/postgresql/data 

volumes: 
    amazingvolume: 
    external: true 

Więc można zdefiniować nazwę woluminu (amazingvolume), jeśli jest to external or not i pod usługi (db w tym przykładzie) możesz określić, który katalog chcesz zamontować.

+0

jeśli pójdziemy tą drogą, nie będziemy mogli edytować plików w katalogu woluminu (który będzie montowany w fizycznej lokalizacji pliku). Nie byłoby to dobre rozwiązanie dla programistów, którzy muszą testować/rozwijać pliki lokalnie, prawda? – blackhawk

1

Wystarczy wyszukać w dokumentacji Döcker dla hostowanych zamontowanych woluminów:

version: '2' 

services: 
    web: 
    image: modx 
    environment: 
     - MYSQL_PORT_3306_TCP=3306 
     - MODX_DB_HOST=mysql:3306 
    volumes: 
     - /home/muzzstick/dev/modxdev/html:/var/www/html 

    links: 
     - db:mysql 
    ports: 
     - 80:80 
    db: 
    image: mysql 
    environment: 
     MYSQL_ROOT_PASSWORD: example 
    ports: 
     - 3306:3306 
    command: mysqld --sql-mode=NO_ENGINE_SUBSTITUTION 
    myadmin: 
    image: phpmyadmin/phpmyadmin 
    links: 
     - db:db 
    ports: 
     - 8080:8080 

Zmień /var/www/html do katalogu, w którym pliki HTML będzie wewnątrz pojemnika. Utwórz także katalog po lewej stronie hosta i nadaj uprawnienia do odczytu wszystkim użytkownikom.

Pozdrowienia

+0

Cześć, dziękuję za to. Próbowałem tego również, ale ma ten sam problem, jak pokazano w moim zaktualizowanym pytanie powyżej niestety. Pojemnik internetowy zostaje natychmiast zamknięty. – Muzzstick

+0

A co mówi w dziennikach? dzienniki dokowania containername –

+0

Dzięki Carlos, dodałem komunikat o błędzie powyżej. – Muzzstick

Powiązane problemy