Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nginx Docker重新启动未显示所需效果_Nginx_Docker_Boot2docker - Fatal编程技术网

Nginx Docker重新启动未显示所需效果

Nginx Docker重新启动未显示所需效果,nginx,docker,boot2docker,Nginx,Docker,Boot2docker,我有一个基于nginx的小测试应用程序,我想在docker容器中运行。所以我遵循这里给出的例子 因此,我有一个foder名称restartest,它包含一个index.html文件,其中有一行内容是Docker Test 1。我在docker容器运行时将其装载为我的卷。所以我用的命令是 docker run -dP -v /Users/Sachin/restartTest/:/usr/share/nginx/html --name engine2 nginx 而且运行良好。我使用curl来验证

我有一个基于nginx的小测试应用程序,我想在docker容器中运行。所以我遵循这里给出的例子

因此,我有一个foder名称restartest,它包含一个index.html文件,其中有一行内容是Docker Test 1。我在docker容器运行时将其装载为我的卷。所以我用的命令是

docker run -dP -v /Users/Sachin/restartTest/:/usr/share/nginx/html --name engine2 nginx
而且运行良好。我使用curl来验证卷是否已正确装入,应用程序是否按预期运行。现在我要做的是将index.html文件的内容(从我的本地主机)更改为Docker test 2,然后重新启动容器。我执行以下命令来验证docker容器中的内容是否确实发生了更改

docker exec engine2 cat /usr/share/nginx/html/index.html
正如预期的那样,该文件读取的是Docker Test 2。但是,当我使用curl命令查看网页是否也反映了更改时,我仍然得到Docker Test 1作为响应。html反映了这一变化,但是当我运行curl命令或从浏览器访问应用程序时,仍然会得到相同的结果。我试过以下方法,但没有效果

  • 重新启动服务
  • 停止并启动容器
  • 停止并启动boot2docker VM和docker守护进程

  • 我不知道为什么会发生这种情况。

    我认为这是一个缓存问题。您是否尝试在
    index.html
    位置配置中设置
    expires-1
    以禁用静态文件的服务器端缓存?

    因此,我在用于在Mac上运行Docker的VirtualBox VM中发现了此已知错误。 当我们在主机和VirtualBox之间共享内容时,只有我们面对这个bug。对于像nginx、apache(显然还有vertx)这样的web服务器来说,有一个优化。每当我们从服务器请求静态文件时,它都使用sendfile向我们提供该文件。错误在于,在VirtualBox的情况下(在上面描述的场景中),无论我们尝试什么,都会得到文件的第一个版本。对于nginx和apache,解决方法是关闭sendfile。然而,就vertx而言,我们使用了一种黑客技术

  • 将文件say login.html重命名为login.html.moved(任意)
  • curl:/…/login.html(我们不会得到任何信息)
  • 将文件重命名回其原始名称login.html.moved to login.html
  • 硬刷新页面(Command+Shift+R) 有关此错误的更多信息,请参阅以下内容


    这个问题不仅仅是nginx的问题。我还有一个vertx3应用程序,它还有一个静态网页,即login.html。我在那里也面临同样的问题。我做了一些更改,我可以看到这些更改(在容器中使用vim,但它们不会反映在网页上。奇怪的问题:()现在你有了很多线索