Docker compose - 共享卷Nginx

Docker compose - share volume Nginx

我只是想测试一下 Docker,似乎有些东西没有正常工作。当我有这样的 docker-compose.yml 时:

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

在浏览器中我 运行 我的 docker.app 域(示例域指向 docker 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 Forbidden

nginx/1.9.12

我正在使用 Windows 8.1 作为我的主机。

是我做错了什么,还是无法通过这种方式共享文件夹?

编辑

解决方案(基于@HemersonVarela 的回答):

我尝试传递的卷位于 D:\Dev\docker 位置,因此我在路径的开头使用了 /d/Dev/docker。但是看着 https://docs.docker.com/engine/userguide/containers/dockervolumes/ 你可以读到:

If you are using Docker Machine on Mac or Windows, your Docker daemon has only limited access to your OS X or Windows filesystem. Docker Machine tries to auto-share your /Users (OS X) or C:\Users (Windows) directory.

所以我需要做的是在 C:\users\marcin 目录中创建我的 nginx-ww/nginx/html 目录,所以我以:

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

这没有问题。文件现在按应有的方式共享

如果您在 Windows 上使用 Docker 计算机,docker 对您的 Windows 文件系统的访问权限有限。默认情况下 Docker 机器尝试自动共享您的 C:\Users (Windows) 目录。

因此文件夹 .../Dev/docker/nginx-www/nginx/html/ 必须位于主机中 C:\Users 目录下的某处。

所有其他路径都来自您虚拟机的文件系统,因此如果您想让一些其他主机文件夹可用于共享,您需要做额外的工作。对于 VirtualBox,您需要使主机文件夹在 VirtualBox 中作为共享文件夹可用。

你必须设置一个命令来将你的 nginx.conf 复制到 nginx 容器中:

Dockerfile:

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

创建一个名为 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