2016-03-14 35 views
7

Voglio solo testare Docker e sembra che qualcosa non funzioni come dovrebbe. Quando ho la mia finestra mobile-compose.yml come questo:Docker compose - share volume Nginx

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

quando in del browser eseguo il mio docker.app dominio (dominio campione indicò finestra mobile IP) sto ottenendo pagina web predefinita nginx.

Ma quando provo a fare qualcosa di simile:

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

quando corro:

docker-compose up -id 

quando corro stesso URL browser sto ottenendo:

403 Forbidden

nginx/1.9.12

Sto usando Windows 8.1 come ospite.

Devo fare qualcosa di sbagliato o forse le cartelle non possono essere condivise in questo modo?

EDIT

Solution (sulla base di @HemersonVarela risposta):

Il volume che ho provato a passare era in posizione D:\Dev\docker quindi ero utilizzando /d/Dev/docker all'inizio del mio cammino. Ma guardando https://docs.docker.com/engine/userguide/containers/dockervolumes/ si può leggere:

Se si utilizza Docker macchina su Mac o Windows, il demone Docker ha solo un accesso limitato al tuo OS X o file system di Windows. Docker Machine tenta di condividere automaticamente la directory/Users (OS X) o C: \ Users (Windows).

così quello che dovevo fare, è quello di creare il mio directory nginx-ww/nginx/html in C:\users\marcin directory, così ho finito con:

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

e questo sta lavorando senza un problema. I file sono ora condivisi come dovrebbero essere

risposta

9

Se si utilizza la Docker Machine su Windows, la finestra mobile ha accesso limitato al filesystem di Windows. Di default Docker Machine tenta di condividere automaticamente la tua directory C:\Users (Windows).

Quindi la cartella .../Dev/docker/nginx-www/nginx/html/ deve trovarsi in qualche punto nella directory C:\Users nell'host.

Tutti gli altri percorsi provengono dal filesystem della macchina virtuale, quindi se si desidera rendere disponibile un'altra condivisione per la condivisione, è necessario eseguire ulteriori operazioni. Nel caso di VirtualBox è necessario rendere disponibile la cartella host come cartella condivisa in VirtualBox.

+0

Grazie mille. Questo è quello che mi mancava. Tuttavia ho trovato un'altra cosa molto strana con la condivisione di file 'index.html'. –

0

è necessario impostare un comando per copiare il nginx.conf nel contenitore nginx:

Dockerfile:

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

Creat un nome dir si nginx e mettere il Dockerfile & nginx.conf lì, poi si deve impostare un build:

docker-compose.yml:

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

Quindi crea i tuoi contenitori con: sudo docker-compose build

Problemi correlati