【问题标题】:Getting forbidden error while using nginx inside docker在 docker 中使用 nginx 时出现禁止错误
【发布时间】:2018-08-21 14:37:15
【问题描述】:

我的 Docker 文件内容是

FROM nginx
COPY /src /usr/share/nginx/html

我的 docker compose 文件内容是

version: '2'
services:
  app:
    build: .
    image: app:1.0.0
    volumes:
    - ./src:/usr/share/nginx/html
    ports:
    - "8080:80"

运行 docker-compose 时出现以下错误

*1 directory index of "/usr/share/nginx/html/" is forbidden

我尝试授予目录权限 -> /usr/share/nginx/html 它没有用。

我想将主机目录与 docker 容器同步。

【问题讨论】:

  • 您的src 是否包含index.html 文件?如果没有,请创建一个示例文件并进行测试。
  • 如果你在docker compose中使用volume作为src文件夹,则不需要使用COPY
  • 是 src 文件夹包含 index.html
  • 关注这个 youtube 视频.. youtube.com/watch?v=LSyIE-bTt5U
  • 这对我有用,但不确定到底错过了什么。

标签: docker nginx docker-compose


【解决方案1】:

我遇到了同样的问题,所以发布的答案可能会帮助其他人或其他人寻找同样的问题

我运行的是nginx官方镜像。

docker run --rm --name some-nginx -p 8080:80 -v /test/html5-youtube.js/examples/:/usr/share/nginx/html -it nginx

我收到了这个错误。

[error] 8#8: *3 directory index of "/usr/share/nginx/html/" is *forbidden*, client: 172.17.0.1, server: localhost, request: "GET / HTTP/1.1", host: "localhost:8080"

所以当我检查目录权限时是错误的。

在我的例子中检查 nginx.conf 中的用户是 nginx 所以更改文件权限。

cd /usr/share/nginx/html
chown nginx:nginx ./*

然后我能够从服务器获得响应。

172.17.0.1 - - [30/Oct/2018:09:04:52 +0000] "GET /html5-youtube.js HTTP/1.1" 404 571 "http://localhost:8080/player.html" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36" "-"

更新:

如果您不使用绑定卷,则在构建时添加权限。

RUN chown nginx:nginx /usr/share/nginx/html/*

【讨论】:

  • 我们是否需要每次都为每个启动的新容器执行此操作?
  • @JananathBanuka 是的,但是如果您在 Dockerfile 中添加,则每次都可以避免这种情况。请检查是否更新了答案。
猜你喜欢
  • 2021-01-13
  • 2015-11-13
  • 2013-07-19
  • 2021-08-24
  • 2020-12-08
  • 1970-01-01
  • 2022-07-15
  • 1970-01-01
  • 2016-10-23
相关资源
最近更新 更多