我有这样的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
文件的正确内容?
答案 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;