我有一个基于nginx的小测试应用程序,我想在docker容器中运行。所以我按照这里给出的例子docker installation
所以我有一个名字 restartTest ,它包含一个index.html文件,其中包含 Docker Test 1 。我在运行时期间将它作为我的卷安装到docker容器中。所以我使用的命令是
docker run -dP -v /Users/Sachin/restartTest/:/usr/share/nginx/html --name engine2 nginx
它运行良好。我使用curl验证卷已正确安装并且应用程序正在运行。现在我要做的是将index.html文件 (从我的localhost)的内容更改为Docker test 2 ,然后重新启动容器。我执行以下命令来验证Docker容器内的内容确实已更改
docker exec engine2 cat /usr/share/nginx/html/index.html
正如预期的那样,该文件读取 Docker Test 2 。但是,当我使用curl命令查看网页是否也反映了更改时,我发现仍然会将 Docker Test 1 作为响应。 index.html反映了更改,但是当我运行curl命令或者从浏览器访问应用程序时,我仍然得到相同的结果。我尝试过以下但无济于事。
我不知道为什么会这样。
答案 0 :(得分:2)
所以我发现VirtualBox VM的这个已知错误用于在Mac上运行Docker。 当我们在主机和VirtualBox之间共享内容时,只有我们面对这个错误。就像nginx,apache(以及显然是vertx)这样的Web服务器而言,存在优化。每当我们从服务器请求静态文件时,它都会使用 sendfile 向我们提供该文件。错误是在VirtualBox的情况下(在上面描述的场景中),无论我们尝试什么,我们总是得到文件的第一个版本。在nginx和apache的情况下解决此问题的方法是关闭sendfile。但是,就vertx而言,我们使用的是hack。
答案 1 :(得分:0)
我认为这是一个缓存问题。您是否尝试在expires -1
位置配置中设置index.html
以禁用静态文件的服务器端缓存?