我的 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
提交
取消