2016-03-14 9 views
7

Я просто хочу протестировать Docker, и кажется, что что-то не работает должным образом. Когда у меня есть Докер-compose.yml вроде этого:Docker compose - share volume Nginx

web: 
    image: nginx:latest 
    ports: 
    - "80:80" 

когда в браузере я бегу мой домен docker.app (домен образца указывает на докер IP) Я получаю Nginx по умолчанию веб-страницы.

Но когда я пытаюсь сделать что-то вроде этого:

web: 
    image: nginx:latest 
    volumes: 
    - /d/Dev/docker/nginx-www/nginx/html/:/usr/share/nginx/html/ 
    ports: 
    - "80:80" 

когда я бегу:

docker-compose up -id 

когда я запускаю же URL в браузере я получаю:

403 Запрещено

nginx/1.9.12

Я использую Windows 8.1 в качестве своего хоста.

Я делаю что-то неправильно или, возможно, папки не могут быть разделены таким образом?

EDIT

Решение (на основе @HemersonVarela ответа):

Объем я пытался передать был в D:\Dev\docker месте, так что я использовал /d/Dev/docker в начале своего пути. Но, глядя на https://docs.docker.com/engine/userguide/containers/dockervolumes/ вы можете прочитать:

Если вы используете Docker машину на Mac или Windows, ваш Docker демон имеет лишь ограниченный доступ к OS X или Windows, файловая система. Docker Machine пытается автоматически обмениваться файлами/Users (OS X) или C: \ Users (Windows).

так, что мне нужно сделать, чтобы создать свой nginx-ww/nginx/html каталог в C:\users\marcin каталоге, так что я закончил:

web: 
    image: nginx:latest 
    volumes: 
    - /c/Users/marcin/docker/nginx-www/nginx/html/:/usr/share/nginx/html/ 
    ports: 
    - "80:80" 

и это работает без проблем. Файлы теперь разделены, так как они должны быть

ответ

9

Если вы используете Docker Machine на Windows, у докера ограниченный доступ к вашей файловой системе Windows. По умолчанию Docker Machine пытается автоматически делить каталог C:\Users (Windows).

Таким образом, папка .../Dev/docker/nginx-www/nginx/html/ должна находиться где-то под C:\Users в каталоге хоста.

Все остальные пути поступают из файловой системы вашей виртуальной машины, поэтому, если вы хотите сделать доступной другую папку хоста для совместного использования, вам необходимо выполнить дополнительную работу. В случае с VirtualBox вам необходимо сделать папку хоста доступной как общую папку в VirtualBox.

+0

Большое спасибо. Это то, чего мне не хватало. Однако я обнаружил еще одну очень странную вещь при обмене файлами 'index.html'. –

0

Вы должны установить команду для копирования nginx.conf в Nginx контейнере:

Dockerfile:

FROM nginx 
COPY nginx.conf /etc/nginx/nginx.conf` 

Creat имя реж его Nginx и поставить Dockerfile & nginx.conf там, то вы должны установить сборку:

docker-compose.yml:

web: 
    image: nginx:latest 
    build :./nginx/ 
volumes: 
    - /d/Dev/docker/nginx-www/nginx/html/:/usr/share/nginx/html/ 
ports: 
    - "80:80" 

Затем создайте свои контейнеры с: sudo docker-compose build