Docker – index.html Nginx文件的无效共享

我有我的docker-compose.yml文件,如下所示:

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

In /c/Users/marcin/docker/nginx-www/nginx/html/我创build了以下内容的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文件的正确内容?

当你的卷以/c/...开始时,我假设你在Windows上使用Docker Toolbox,并且使用docker-machine工具。 你遇到的是一个已知的Nginx 问题 (或者Nginx使用的sendfile Linux系统调用)和Virtualbox共享文件夹。

Vagrant文​​档 (也使用VirtualBox)也提到了这个问题,该文档还提供了可能适用于您的建议解决方案:

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

在Nginx中:

 sendfile off; 

在Apache中:

 EnableSendfile Off 

根据供应商错误跟踪器的错误报告中的最新评论,如果您使用的是open_file_cache指令(默认情况下是禁用的),那么您也需要将其关闭:

 open_file_cache off;