python - 无法从 docker 外部访问在 docker 中运行的 Flask 服务
问题描述
我在 docker 内创建了一个烧瓶服务
import json
from flask import Flask, request
app = Flask(__name__)
@app.route("/", methods=["GET", "POST"])
def home():
return "App is working"
if __name__ == "__main__":
app.run("0.0.0.0", debug=False)
但我无法从码头外部访问上述服务。
我Dockerfile
的是
FROM python:3.7
MAINTAINER sociopath(xyz@gmail.com)
COPY requirements.txt domain.yml config.yml /tmp/
COPY data /tmp/data
COPY helper /tmp/helper
COPY models /tmp/models
COPY app.py /tmp/app.py
WORKDIR /tmp
RUN pip install -r requirements.txt
EXPOSE 5000
CMD flask run --host 0.0.0.0
我使用命令构建它
docker build . -t cont1
并使用
docker run -d -p 5000:5000 --name c1 cont1
当我从 docker 内部发送请求时,我得到App is working
但当我尝试从我的机器访问时没有响应。
编辑
我有 Windows 操作系统,我在其中使用安装了 docker 的 Ubuntu VM。我在 Ubuntu 上得到响应,但是当我尝试从 Windows 访问它时,我收到了一个错误。
解决方案
将您的 docker 文件公开给外部源(侦听器)(参考)
EXPOSE 5000
前任:-
FROM python:3.7
MAINTAINER sociopath(xyz@gmail.com)
COPY requirements.txt domain.yml config.yml /tmp/
COPY data /tmp/data
COPY helper /tmp/helper
COPY models /tmp/models
COPY app.py /tmp/app.py
WORKDIR /tmp
RUN pip install -r requirements.txt
EXPOSE 5000
CMD flask run --host=0.0.0.0
推荐阅读
- c# - C# - 在 BinaryFormatter 反序列化中设置默认 int 值
- python - 创建 2 个向量和 1 个矩阵的 3d 矩阵的方法
- python - 如何将日期时间设置为 zaxis 而不会出错:OverflowError: Python int too large to convert to C long for 3D plot
- typescript - 是否可以定义一个总是应用过多属性检查的接口/类型?
- cmake - 是否有从 cmake 调用 jamfile 和 jamrule 的规定,反之亦然?
- angular - 反应式表单的自定义验证,两个嵌套输入的验证器,
- java - Java - 从 JSON 中提取数组字符串并转换为 JSON 格式
- push-notification - 将多个媒体事件存储到一个 Firestore 集合中?
- html - 使用悬停文本为文本 HTML/CSS 着色问题
- python - 在 Python 和 imageai 中使用自定义模型进行多对象检测