我的 server.py 有這段代碼:@app.route('/health', methods = ['POST'])def check(): if request.method == 'POST': return jsonify({'response':'OK!'})if __name__ == '__main__': app.run(debug=True, port=9090)我的 dockerfile 在此有 EXPOSE:FROM py_ubuntu_flask_numpy_torch_jysan_voiceRUN mkdir -p ./voice_flask/dWORKDIR /voice_flask/dCOPY . /voice_flask/dEXPOSE 9090CMD ["python", "server.py"]我使用此 cmd 構建并運行我的圖像:docker build -t my_app .docker run my_app它啟動并收聽: * Serving Flask app "server" (lazy loading) * Running on http://127.0.0.1:9090/ 但在郵遞員中我什至無法檢查健康功能:"could not get response"我懷疑 expose 9090 在 0.0.0.0 上有效?不在 127.0.0.1 上?如何修復它并測試我的應用程序?
1 回答

桃花長相依
TA貢獻1860條經驗 獲得超8個贊
EXPOSE
本身不暴露任何端口。
如果你像這樣運行你的容器:
docker run -P my_app
Docker 會將容器內的端口 9090 綁定到主機上的隨機端口。
我懷疑你真正想要的是
docker run -p 9090:9090 my_app
這會將容器的 9090 端口綁定到主機上的 9090 端口。
此外,您的應用正在偵聽 127.0.0.1,這意味著它拒絕來自容器外部的連接。
你需要的是
if __name__ == '__main__': app.run(debug=True, port=9090, host='0.0.0.0')
添加回答
舉報
0/150
提交
取消