簡體   English   中英

Dockerized flask web 應用拋出 403 Forbidden

[英]Dockerized flask web app throws 403 Forbidden

我有一個基本的 REST API 在 Flask 中實現。我想嘗試使用 Docker 來容器化它。 我是 Docker 的新手,但根據我在各種論壇上的了解,這就是我設置的。

Dockerfile

FROM python:3.8-alpine

WORKDIR /myapplication

COPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txt

COPY . .
ENV FLASK_APP="app.py"

CMD ["python3", "-m" , "flask", "run"]

要求.txt

Flask==2.0.2

然后我輸入 go 到終端,然后運行$ docker build -t myapp:latest.

構建成功,我可以在 Docker 桌面應用程序中看到my app程序

然后我跑

$ docker run --rm -it -p 8080:8080 myapp:latest

 * Serving Flask app 'app.py' (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Docker 桌面顯示myapp正在使用中。

到目前為止,一切都很好。 但這是我開始遇到問題的地方。

我還使用 Postman 進行 API 路由測試。 如果我要在 Docker 之外運行應用程序,並且我從 go 到127.0.0.1:5000/data或我的任何其他路由,我會得到很好的響應。 但是隨着 Docker 構建的運行,我無法再訪問此路由或任何其他路由。

我嘗試了無窮無盡的組合:127.0.0.1:5000、127.0.0.1:8080、localhost、localhost:5000、localhost:8080,均無濟於事。

唯一給我任何響應的是 127.0.0.1:5000。 我得到的響應是403 Forbidden ,其中 Postman 表示“該請求是合法請求,但服務器拒絕響應它。”

對於它的價值,我在新的 M1 Pro MacBook 上運行它。 我知道新的 Mac 對許可很敏感,所以如果許可是問題,我不會感到驚訝。

我真的不知道該做什么,也不知道從這里到 go 的哪里,我嘗試過的每個來源都讓我對我已經嘗試過的內容略有不同,而且我距離它的工作還差得很遠。 請幫助,謝謝。

您的 docker 應用程序在容器內的端口5000上運行,但在您的 docker run命令中,您將port 8080 與容器內的端口8080綁定,而端口 8080 應該是5000 由於容器內的端口8080上沒有任何運行,因此您會收到403錯誤

命令應該是

docker run --rm -it -p 8080:5000 myapp:latest

您可以從主機訪問端口 8080 上的應用程序,即:

127.0.0.1:8080/data # access from host machine

127.0.0.1:5000/data # 從容器內部訪問

我剛剛注意到,您沒有在 Dockerfile 的最后一行添加 arg "--host=0.0.0.0"

CMD ["python3", "-m" , "flask", "run", "--host=0.0.0.0"]

在 docker 構建並發布端口后,您應該能夠訪問該應用程序。

這最終成功了,謝謝@Tasnuva

Dockerfile、append CMD 與--host

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0"]

在 CLI 中, $ docker run --rm -it -p 8080:5000 myapp:latest

127.0.0.1:8080訪問 Postman 中的端點

在 dockerfile 你需要暴露你的端口

...
ENV FLASK_APP="app.py"
EXPOSE 5000
CMD ["python3", "-m" , "flask", "run"]

暫無
暫無

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

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