如何在使用Docker运行Nginx时禁用Nginx缓存

4

我使用官方的nginx docker镜像 (https://registry.hub.docker.com/_/nginx/)。当我修改Index.html文件时,我没有看到我的更改。在nginx.conf中设置sendfile off也没有帮助。

只有重新构建镜像我才能看到更改。

以下是我的Dockerfile:

FROM nginx
COPY . /usr/share/nginx/html
COPY nginx/nginx.conf /etc/nginx/nginx.conf
COPY nginx/default.conf /etc/nginx/conf.d/default.conf

这是我用来构建和运行它的命令:

docker build -t some-nginx .
docker run --name app1 -p 80:80 -v $(pwd):/user/share/nginx/html -d some-nginx

Thank you

2个回答

2
这不是缓存问题。一旦使用COPY指令将文件复制到容器镜像中,从主机修改该文件不会产生任何效果 - 它是一个不同的文件。
您试图通过使用-v参数将主机的卷绑定到容器来覆盖文件。这将起作用 - 您现在将在主机和容器上使用相同的文件,但您拼写错误了 - 应为/usr而不是/user

@user3538553 左侧应该有一个点下面的勾号符号。不过不用担心 :) - Adrian Mouat
我有一个与nginx Docker镜像类似的问题。当我更新挂载文件夹中的文件并在浏览器中刷新页面时,没有任何变化。容器使用“docker run -d -P -v $HOME/site:/usr/share/nginx/html --name mysite nginx”命令运行。有趣的是,响应头,如Content-Length、ETag和Last-Modified显示了正确的新更新数据,但响应保持不变... - Dmitry
当我删除、创建或重命名文件时,它就像魔法般地运行。 (我在Mac上使用Boot2Docker,也许这很重要) - Dmitry
@DmitryAkinin请不要在评论中提问!如果您愿意,请开一个问题 :) - Adrian Mouat
1
抱歉,我觉得我的问题不够重要以至于需要开一个新的问题页面。我错了 :) 顺便说一下——我发现了一个描述我的问题的问题 https://github.com/nginxinc/docker-nginx/issues/24 。也许对其他人有帮助。 - Dmitry
显示剩余3条评论

1
只需在nginx.conf文件中修改sendfile off即可生效。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接