Docker - 无法共享index.html Nginx文件

时间:2016-03-14 20:57:19

标签: nginx docker docker-compose

我有这样的docker-compose.yml文件:

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

/c/Users/marcin/docker/nginx-www/nginx/html/我创建了index.html文件,其中包含以下内容:

<html>
<head>
</head>
<body>
hello index
</body>
</html>

但是当我查看我的域名时,我看到了空白页面,但是在页面源代码中我看到了类似这样的内容:

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>

似乎Docker正在使用默认的Nginx文件并且只占用它的一部分(可能与我index.html文件中的部分长度完全一样。对于其他文件,例如abc.html,没有这样的问题(可能是因为它在Nginx图像中默认不存在)。如何解决此问题以显示index.html文件的正确内容?

1 个答案:

答案 0 :(得分:3)

由于您的音量以/c/...开头,我假设您正在使用Windows上的Docker Toolbox以及随附的docker-machine工具。您遇到的是Nginx的known issue(或者更确切地说是Nginx使用的sendfile Linux系统调用)以及Virtualbox共享文件夹。

Vagrant documentation(也使用VirtualBox)中也提到了这个问题,该问题还附带了一个可能适合您的建议解决方案:

  

有一个与sendfile相关的VirtualBox错误,可能导致文件损坏或无法更新。您应该在可能正在运行的任何Web服务器中停用sendfile。

     

在Nginx中:

sendfile off;
     

在Apache中:

EnableSendfile Off

根据bug report in the vendor bug tracker中的最新评论,如果您使用open_file_cache指令(默认情况下已禁用),您也需要将其关闭:< / p>

open_file_cache off;