【发布时间】:2018-06-08 12:44:31
【问题描述】:
我正在开发一个用 python 编写的微服务。我的微服务在我的 Windows 机器上运行良好,我可以轻松地对其进行测试。但是,在我的 Linux 容器上它也可以正常工作,但我无法对其进行测试。即使按照here 的说明优化我的网络访问代码。
这是我的微服务:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run(host='0.0.0.0')
- 我通过在命令提示符下键入在 Windows 上运行来测试:
python.exe app.py
- 我收到一条以
结尾的消息在http://0.0.0.0:5000/ 上运行(按 CTRL C 退出)。
为了测试我的微服务,我执行了浏览器来访问: http://localhost:5000/
我可以看到“Hello World”消息。所以我的应用程序似乎运行良好。
在那之后,我开始使用 docker。这是我的 Dockerfile(名为“Dockerfile”)。
FROM python
RUN apt-get update -y
RUN apt-get install -y python-pip python-dev build-essential
RUN pip install Flask
COPY . /app
WORKDIR /app
ENTRYPOINT ["python3"]
CMD ["app.py"]
这是我的构建命令:
docker build -t docktoflask .
考虑到构建过程,它显示了一些输出。
然后我开始用这个命令运行容器:
docker run -p 5002:5002 docktoflask
我收到了与在 windows 上相同的结束消息(这很了不起,因为我指定了端口 5002)。
之后,我尝试使用此链接进行测试: http://localhost:5002/
(当然我也试过http://localhost:5000/)
没有成功....(这意味着浏览器错误而不是 hello world 消息)。错误是荷兰语(我的浏览器语言),但含义与this 相同。
这很烦人,因为它似乎可以工作并且端口确实处于活动状态。 有两个应用程序,我应该可以从我的浏览器(portainer 和我自己的应用程序)访问。我可以毫无问题地访问搬运工。在 docker 容器中运行时,如何访问我的微服务?
【问题讨论】:
标签: python-3.x docker networking flask