亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法在 docker 容器中使用 gunicorn 連接到燒瓶應用程序

無法在 docker 容器中使用 gunicorn 連接到燒瓶應用程序

慕虎7371278 2021-12-26 10:15:55
我有一個燒瓶應用程序,我正在嘗試使用 gunicorn 在 docker 容器內運行它。這是我的 dockerfileFROM python:3.6WORKDIR /appCOPY ./requirements.txt /.requirements.txtCOPY . /app# Install any needed packages specified in requirements.txtRUN pip install -r requirements.txtEXPOSE 8000ENV FLASK_APP=<some_name>ENV FLASK_ENV=developmentCMD gunicorn -b :8000 -w 4 app:app這就是我運行容器的方式 -docker run <name>這就是我測試它的方式-    curl -X POST http://172.17.0.2:8000/login -H 'cache-control: no-cache' -H 'content-type: application/json' -d '<SOME_PAYLOAD>'curl: (7) Failed to connect to 172.17.0.2 port 8000: Operation timed out我在這個網站上瀏覽了幾個答案據我所知,我是暴露端口命中正確的 IP在我的主機上點擊正確的端口將主機上的端口映射到我的 docker 容器。為什么這個操作超時?我也試過CMD gunicorn -b 0.0.0.0:8000 -w 4 app:app 這應該映射一切docker run -p 8000:8000 iterative,這應該強制主機和容器上的端口之間的映射。但無濟于事。在我的電腦上,該應用程序運行良好。為什么它在 docker 容器中不起作用?
查看完整描述

3 回答

?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

您運行的 docker 容器不正確

docker run -p 8080:8080 <the-name-of-your-image>

假設您的 Dockerfile 正在獲取正確的文件,這應該可以解決問題

轉到 localhost:8080 進行驗證



查看完整回答
反對 回復 2021-12-26
?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

根據我的經驗,我發現以下方法在處理 gunicorn 和 docker for flask 時更有效。我建議你在 Dockerfile 中運行 CMD,如下所示:


CMD ["gunicorn", "-b", "0.0.0.0:8000", "<scriptname>:<runtimefunction>"]

您的情況下的腳本名稱很可能是“app.py”和運行時函數“app”。只是為了表明我的建議:


在 app.py


from flask import Flask


app = Flask(__name__)


@app.route("/")

def home():

    return "Hello, World!"


if __name__ == "__main__":

    app.run(debug=True)

還要添加工人:


CMD ["gunicorn", "-w", "5", "-b", "0.0.0.0:8000", "<scriptname>:<runtimefunction>"]

希望這可以幫助。


查看完整回答
反對 回復 2021-12-26
?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

我也遇到了這個問題,當然問題是我在工具鏈的某個地方指定了一個不同的端口。


請仔細檢查您的端口!


app.py


from flask import Flask


app = Flask(__name__)


@app.route('/')

def index():

    return "example"

文件


FROM foo-image:tag

...

RUN pip3 install gunicorn Flask

COPY *.py /app/

WORKDIR /app

EXPOSE 8001

CMD ["gunicorn", "-b", "0.0.0.0:8001", "--workers", "2", "app:app"]

運行命令

https://docs.docker.com/engine/reference/run/#expose-incoming-ports


docker run -p 8001:8001 "$CONTAINER_TAG"


查看完整回答
反對 回復 2021-12-26
  • 3 回答
  • 0 關注
  • 306 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號