2016-03-14 18 views
7

Ich möchte nur Docker testen und es scheint etwas funktioniert nicht so, wie es sollte. Als ich meine Docker-compose.yml wie diese:Docker komponieren - Volumen teilen Nginx

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

wenn in Browser ich meine docker.app Domäne ausgeführt (Beispieldomäne wies IP Andockfenster) Ich bin Standard nginx Webseite zu bekommen.

Aber wenn ich versuche, so etwas zu tun:

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

wenn ich laufe:

docker-compose up -id 

wenn ich gleiche URL in Browser ausgeführt Ich erhalte:

403 Verboten

nginx/1.9.12

Ich verwende Windows 8.1 als meinen Host.

Mache ich etwas falsch oder können Ordner nicht auf diese Weise geteilt werden?

EDIT

Solution (basierend auf @HemersonVarela Antwort):

Das Volumen habe ich versucht war in D:\Dev\docker Lage zu passieren und so war ich /d/Dev/docker am Anfang meines Weges mit. Aber bei https://docs.docker.com/engine/userguide/containers/dockervolumes/ suchen, können Sie lesen:

Wenn Sie mit Docker-Maschine auf dem Mac oder Windows, Ihr Docker Daemon nur eingeschränkten Zugriff auf Ihre OS X oder Windows-Dateisystem hat. Docker Machine versucht, das Verzeichnis/Benutzer (OS X) oder C: \ Benutzer (Windows) automatisch freizugeben.

so, was ich tun musste, ist mein nginx-ww/nginx/html Verzeichnis in C:\users\marcin Verzeichnis zu erstellen, so dass ich endete mit:

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

und dies ohne Probleme funktioniert. Die Dateien werden jetzt so freigegeben, wie sie sein sollten

Antwort

9

Wenn Sie Docker Machine unter Windows verwenden, hat Docker eingeschränkten Zugriff auf Ihr Windows-Dateisystem. Standardmäßig versucht Docker Machine, Ihr Verzeichnis C:\Users (Windows) automatisch freizugeben. Der Ordner .../Dev/docker/nginx-www/nginx/html/ muss sich irgendwo unter dem Verzeichnis C:\Users im Host befinden.

Alle anderen Pfade kommen vom Dateisystem Ihrer virtuellen Maschine. Wenn Sie also einen anderen Host-Ordner für die Freigabe freigeben möchten, müssen Sie zusätzliche Arbeit erledigen. Im Fall von VirtualBox müssen Sie den Host-Ordner als freigegebenen Ordner in VirtualBox verfügbar machen.

+0

Vielen Dank. Das habe ich vermisst. Allerdings fand ich noch eine sehr seltsame Sache mit 'index.html' File Sharing. –

0

Sie haben einen Befehl zu geben Sie Ihre nginx.conf in den nginx Container kopieren:

Dockerfile:

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

erstellen ein Verzeichnis Namen es nginx und setzen Sie den Dockerfile & nginx.conf dort, dann haben Sie zu setzen einen 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" 

Dann bauen Sie Ihre Behälter mit: sudo docker-compose build

Verwandte Themen