2016-03-14 49 views
7

Tôi chỉ muốn kiểm tra Docker và có vẻ như một cái gì đó không hoạt động như mong muốn. Khi tôi có tôi Docker-compose.yml như thế này:Docker compose - chia sẻ khối lượng Nginx

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

khi trong trình duyệt của tôi chạy docker.app tên miền của tôi (tên miền mẫu chỉ vào Docker IP) Tôi nhận được trang web nginx mặc định.

Nhưng khi tôi cố gắng làm một cái gì đó như thế này:

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

khi tôi chạy:

docker-compose up -id 

khi tôi chạy cùng url trong trình duyệt của tôi nhận được:

403 Forbidden

nginx/1.9.12

Tôi đang sử dụng Windows 8.1 làm máy chủ lưu trữ của mình.

Tôi có làm gì sai hay không thể chia sẻ các thư mục theo cách này?

EDIT

Solution (dựa trên @HemersonVarela câu trả lời):

Khối lượng tôi đã cố gắng để vượt qua là trong D:\Dev\docker vị trí vì vậy tôi đã sử dụng /d/Dev/docker vào đầu con đường của tôi. Nhưng nhìn vào https://docs.docker.com/engine/userguide/containers/dockervolumes/ bạn có thể đọc:

Nếu bạn đang sử dụng Docker Machine trên Mac hoặc Windows, daemon Docker của bạn chỉ có quyền truy cập hạn chế vào hệ điều hành OS X hoặc Windows của bạn. Docker Machine cố gắng tự động chia sẻ thư mục/Users (OS X) hoặc C: \ Users (Windows) của bạn.

vì vậy những gì tôi cần làm, là để tạo thư mục nginx-ww/nginx/html tôi trong C:\users\marcin thư mục, vì vậy tôi đã kết thúc với:

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

và điều này đang làm việc mà không có một vấn đề. Các tệp hiện được chia sẻ vì chúng phải là

Trả lời

9

Nếu bạn đang sử dụng Docker Machine trên Windows, docker có quyền truy cập hạn chế vào hệ thống tệp Windows của bạn. Theo mặc định, Docker Machine cố gắng tự động chia sẻ thư mục C:\Users (Windows) của bạn.

Vì vậy, thư mục .../Dev/docker/nginx-www/nginx/html/ phải được đặt ở đâu đó dưới thư mục C:\Users trong máy chủ.

Tất cả các đường dẫn khác đến từ hệ thống tệp của máy ảo của bạn, vì vậy nếu bạn muốn làm cho một số thư mục lưu trữ khác có sẵn để chia sẻ, bạn cần thực hiện thêm công việc. Trong trường hợp của VirtualBox, bạn cần phải làm cho các thư mục lưu trữ có sẵn như là một thư mục được chia sẻ trong VirtualBox.

+0

Cảm ơn rất nhiều. Đây là những gì tôi đã mất tích. Tuy nhiên tôi đã tìm thấy một điều rất lạ lùng hơn với việc chia sẻ tệp 'index.html'. –

0

Bạn cần phải thiết lập một lệnh để sao chép nginx.conf của bạn vào container nginx:

Dockerfile:

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

Tạo một tên dir nó nginx và đặt Dockerfile & nginx.conf ở đó, sau đó bạn phải thiết lập công trình:

docker-compose.yml:

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

Sau đó, xây dựng các vùng chứa của bạn với: sudo docker-compose build

Các vấn đề liên quan