nginx-Docker重新启动未显示出预期的效果

我有一个基于nginx的小型测试应用程序,我想在docker容器中运行.所以我按照这里给出的示例docker installation

因此,我有一个foder名称restartTest,它包含一个index.html文件,其中包含单行内容,即Docker Test1.我在运行Docker容器时将其作为卷安装.所以我用的命令是

docker run -dP -v /Users/Sachin/restartTest/:/usr/share/nginx/html --name engine2 nginx

而且运行良好.我使用curl来验证卷是否已正确安装并且应用程序正在按需运行.现在,我要做的是将index.html文件的内容(从本地主机)更改为Docker测试2,然后重新启动容器.我执行以下命令以验证Docker容器中的内容确实已更改

docker exec engine2 cat /usr/share/nginx/html/index.html

正如预期的那样,该文件将读取Docker Test2.但是,当我使用curl命令查看网页是否也反映了更改时,我仍然可以得到Docker Test 1作为响应. index.html反映了更改,但是当我运行curl命令或从浏览器访问该应用程序时,仍会得到相同的结果.我尝试了以下方法,但无济于事.

>重新启动服务
>停止并启动容器
>停止并启动boot2docker VM和docker守护程序.

我不知道为什么会这样.

最佳答案
因此,我发现了VirtualBox VM的一个已知错误,该错误用于在Mac上运行Docker.
当我们在主机和VirtualBox之间共享内容时,只有我们会遇到此错误.就诸如nginx,apache(显然是vertx)之类的Web服务器而言,存在一种优化.每当我们从服务器请求静态文件时,它都会使用sendfile为我们提供文件.错误是在VirtualBox的情况下(在上述情况下),无论尝试什么,我们始终会获得文件的第一个版本.对于Nginx和apache,此问题的解决方法是关闭sendfile.但是,就vertx而言,我们使用了一种技巧.

>将文件“ login.html”重命名为“ login.html.moved”(所有内容)
> curl:/…… / login.html(我们什么也得不到)
>将文件重命名为其原始名称login.html.移至login.html
>硬刷新页面(Command Shift R).

有关此错误的更多信息,请参考以下内容

Link1

Link2

Link3

Link4

转载注明原文:nginx-Docker重新启动未显示出预期的效果 - 代码日志