![](/img/trans.png)
[英]Getting 403 forbidden while running flask app on apache(centos 7)
[英]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.