Nginx Docker重新启动未显示所需效果
我有一个基于nginx的小测试应用程序,我想在docker容器中运行。所以我遵循这里给出的例子 因此,我有一个foder名称restartest,它包含一个index.html文件,其中有一行内容是Docker Test 1。我在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来验证
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命令或从浏览器访问应用程序时,仍然会得到相同的结果。我试过以下方法,但没有效果
我不知道为什么会发生这种情况。我认为这是一个缓存问题。您是否尝试在
index.html
位置配置中设置expires-1
以禁用静态文件的服务器端缓存?因此,我在用于在Mac上运行Docker的VirtualBox VM中发现了此已知错误。
当我们在主机和VirtualBox之间共享内容时,只有我们面对这个bug。对于像nginx、apache(显然还有vertx)这样的web服务器来说,有一个优化。每当我们从服务器请求静态文件时,它都使用sendfile向我们提供该文件。错误在于,在VirtualBox的情况下(在上面描述的场景中),无论我们尝试什么,都会得到文件的第一个版本。对于nginx和apache,解决方法是关闭sendfile。然而,就vertx而言,我们使用了一种黑客技术
这个问题不仅仅是nginx的问题。我还有一个vertx3应用程序,它还有一个静态网页,即login.html。我在那里也面临同样的问题。我做了一些更改,我可以看到这些更改(在容器中使用vim,但它们不会反映在网页上。奇怪的问题:()现在你有了很多线索