簡體   English   中英

swagger-ui-builder的Docker Alpine nginx 403禁止錯誤

[英]Docker Alpine nginx 403 Forbidden error for swagger-ui-builder

這發生在Windows 10上的VirtualBox中的Ubuntu 16.04上,Docker版本為1.12.1,而swagger-ui版本為2.2.2

我正嘗試按照其網站上的說明 docker容器中構建和運行Swagger UI:

docker build -t swagger-ui-builder。

docker run -p 127.0.0.1:8080:8080 swagger-ui-builder

該說明說,現在我應該能夠查看swagger-ui的運行情況,但是,當我打開127.0.0.1:8080時,僅返回了此頁面:

<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.8.1</center>
</body>
</html>

這是Dockerfile的內容:

FROM alpine:3.3

MAINTAINER Roman Tarnavski

RUN apk add --update nginx

COPY nginx.conf /etc/nginx/
ADD ./dist/ /usr/share/nginx/html

EXPOSE 8080

CMD nginx -g 'daemon off;'

我在stackoverflow上找到了類似的帖子,但是沒有一個可以幫助我解決這個問題。 我在做什么錯以及如何解決這個問題?

該問題是由權限要求引起的:www-data用戶/組無權訪問網站的目錄和文件。

此問題的可接受答案中解釋了此問題: 所有文件均禁止Nginx 403

為了解決這個問題,必須在Dockerfile中添加以下幾行:

RUN set -x ; \
  addgroup -g 82 -S www-data ; \
  adduser -u 82 -D -S -G www-data www-data && exit 0 ; exit 1

RUN chown -R www-data:www-data /usr/share/nginx/html/*
RUN chmod -R 0755 /usr/share/nginx/html/*

該要點解釋了命令的上部: https : //gist.github.com/briceburg/47131d8caf235334b6114954a6e64922

必須先添加用戶/組www-data,然后才能為其設置權限。 摘要指出, 82是Alpine中“ www-data”的標准uid / gid

命令的下部是另一個論壇中類似問題的解決方案: https : //www.digitalocean.com/community/questions/nginx-403-forbidden--2

因此,固定的Dockerfile如下所示:

FROM alpine:3.3

MAINTAINER Roman Tarnavski

RUN apk add --update nginx

COPY nginx.conf /etc/nginx/
ADD ./dist/ /usr/share/nginx/html

RUN set -x ; \
  addgroup -g 82 -S www-data ; \
  adduser -u 82 -D -S -G www-data www-data && exit 0 ; exit 1

RUN chown -R www-data:www-data /usr/share/nginx/html/*
RUN chmod -R 0755 /usr/share/nginx/html/*

EXPOSE 8080

CMD nginx -g 'daemon off;'

現在,如果我重建並重新運行swagger-ui-builder,該網站將正確顯示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM