我正在尝试从基础知识中学习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映像时出现的错误是
我对docker和python都是全新的。所以请帮我...提前感谢
答案 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或其他人从这里获取。