2016-03-14 21 views
7

Sadece Docker'ı test etmek istiyorum ve olması gerektiği gibi çalışmadığı görülüyor. Bu gibi benim liman işçisi-compose.yml varsa:Docker compose - birimi paylaş Nginx

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

tarayıcıda benim docker.app alanı varsayılan nginx web sayfasını alıyorum (örnek alan IP liman işçisi işaret) çalıştırın. Böyle bir şey yapmaya çalıştığınızda

Ama:

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

Ben çalıştırdığınızda:

docker-compose up -id 

ben tarayıcısında aynı url çalıştırdığınızda ben alıyorum:

403 Forbidden

nginx/1.9.12

benim ev sahibi olarak Windows 8.1'i kullanıyorum.

yanlış ya da belki klasörleri bu şekilde paylaşılamaz bir şey yapmak mı? (@HemersonVarela Yanıta göre)

DÜZENLEME

Çözüm:

ben geçmek denedim hacmi D:\Dev\docker konumda oldu benim yolun başında /d/Dev/docker kullanıyordum. Ama https://docs.docker.com/engine/userguide/containers/dockervolumes/ bakarak okuyabilir:

Mac veya Windows üzerinde Docker Makinesi kullanıyorsanız, sizin Docker cini senin OS X veya Windows dosya sistemine sadece sınırlı erişimi vardır. Docker Machine/Kullanıcılar (OS X) veya C: \ Users (Windows) dizinini otomatik olarak paylaşmaya çalışır.

yüzden yapmam gerekeni, C:\users\marcin dizinde benim nginx-ww/nginx/html dizin oluşturmaktır, bu yüzden ile sona erdi:

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

ve bu bir sorun olmadan çalışıyor. Eğer Windows Docker Makinesi kullanıyorsanız bunlar

cevap

9

olması gerektiği gibi dosyalar artık paylaşılır, liman işçisi Windows dosya sistemine erişimi sınırlıdır. Varsayılan olarak Docker Machine, C:\Users (Windows) dizininizi otomatik olarak paylaşmaya çalışır.

Yani klasör .../Dev/docker/nginx-www/nginx/html/ konakta C:\Users dizin altında bir yere yerleştirilmelidir.

Diğer tüm yollar sanal makinenin dosya sistemi geliyor, bu yüzden paylaşım için başka konak klasörü kullanılabilir hale getirmek istiyorsanız, ek iş yapmak gerekir. VirtualBox durumunda, host klasörünü VirtualBox'ta bir paylaşımlı klasör olarak kullanılabilir hale getirmeniz gerekir.

Dockerfile:

+0

Çok teşekkürler. Bu benim eksik olduğum şey. Ancak 'index.html' dosya paylaşımı ile bir çok daha garip bir şey buldum. –

0

Sen nginx kabın içine senin nginx.conf kopyalamak için bir komut ayarlamak zorunda

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

Kreat nginx bir dir adı o ve orada Dockerfile & nginx.conf koymak, o zaman gerek bir yapıyı ayarlama:

docker-compose.yml:

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

Ardından kaplarınızı şu şekilde doldurun: sudo docker-compose build

İlgili konular