运行dockerized Hello world python示例时执行格式错误

时间:2019-04-12 04:02:05

标签: python docker flask

我正在尝试从基础知识中学习docker。在他们的官方文档中,他们演示了一个简单的Hello world Python应用程序。但是,如果我在Windows主机上尝试相同操作,则会收到以下异常。我的世界代码

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
    return "Hello World!"
if __name__ == "__main__":
    app.run(host="0.0.0.0", port=int("5000"), debug=True)

和我的docker文件:

FROM python:alpine3.7
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
EXPOSE 5000
CMD python ./index.py

requirement.txt文件仅包含要安装的库名称(烧瓶)。

运行dockerized映像时出现的错误是

Console output from Windows

我对docker和python都是全新的。所以请帮我...提前感谢

1 个答案:

答案 0 :(得分:0)

我之前已经看过这种模式,所以我很确定错误消息的含义,但是在这种情况下,我不知道为什么。似乎正在发生的事情是Flask会自行重新启动,但是最初的执行是从python ./index.py开始的,那么重新启动就是在/app/index.py进行。它试图处理python最初要执行的Python文件的第一个输入参数,就像它可以直接执行一样。错误是说不是。如果在该文件的顶部放置一个#!/usr/bin/env python之类的shebang行,并使之可执行,则它可能会开始为您工作。但是您不必这样做。此处的设置应该可以正常工作。

所以我用Google搜索了,这似乎是 werkzeug (Flask使用的库), Docker Windows 组合的一个已知问题。 strong>:

https://github.com/pallets/werkzeug/issues/1482

由于我不在Windows上,因此我将其留给OP或其他人从这里获取。