在Docker中使用Nginx时出现禁止错误

Chi*_*rni 5 nginx docker docker-compose

我的Docker文件内容是

FROM nginx
COPY /src /usr/share/nginx/html
Run Code Online (Sandbox Code Playgroud)

我的docker撰写文件内容是

version: '2'
services:
  app:
    build: .
    image: app:1.0.0
    volumes:
    - ./src:/usr/share/nginx/html
    ports:
    - "8080:80"
Run Code Online (Sandbox Code Playgroud)

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

*1 directory index of "/usr/share/nginx/html/" is forbidden
Run Code Online (Sandbox Code Playgroud)

我尝试授予目录-> / usr / share / nginx / html的权限,但它不起作用。

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

Adi*_*iii 10

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

我正在运行 nginx 官方镜像。

docker run --rm --name some-nginx -p 8080:80 -v /test/html5-youtube.js/examples/:/usr/share/nginx/html -it nginx
Run Code Online (Sandbox Code Playgroud)

我收到这个错误。

[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"
Run Code Online (Sandbox Code Playgroud)

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

在此处输入图片说明

在我的情况下检查 nginx.conf 中的用户是 nginx,因此更改文件权限。

cd /usr/share/nginx/html
chown nginx:nginx ./*
Run Code Online (Sandbox Code Playgroud)

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

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 Code Online (Sandbox Code Playgroud)

更新:

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

RUN chown nginx:nginx /usr/share/nginx/html/*
Run Code Online (Sandbox Code Playgroud)

  • 我们是否需要每次为每个新容器启动时都执行此操作? (2认同)