【发布时间】:2022-06-16 14:50:20
【问题描述】:
现在我无法在 M1 Macbook 上的 Docker 容器中运行 Python Flask。我使用的是 macOS Monterrey 12.4,但问题已经出现在 12.3 上。我的 Flask 应用非常基础:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"
if __name__ == '__main__':
app.run(port='5000')
我的 Dockerfile 也是如此:
FROM arm64v8/python:latest
RUN mkdir /templates
COPY templates/* ./templates
COPY requirements.txt app.py ./
RUN pip3 install -r requirements.txt
CMD [ "python3", "-m" , "flask", "run"]
我在我的 repo 中运行以下 Docker 命令:
docker build -t quick-test .
docker run -d -p 5000:5000 quick-test
当我访问我的 localhost:5000 时,我的浏览器中出现了 ERR_EMPTY_RESPONSE。这种情况一次又一次地发生,在其他 Flask 应用程序中也是如此。我查看了我的端口,这是唯一运行在 5000 的端口。
还尝试安装带有 Rosetta 2 的 Intel Docker Desktop,但无济于事。我尝试的其他事情是将 Docker 映像更改为 ARM64 架构(没有改变任何东西),并在与我的不同的 M1 Mac 上运行它(产生相同的结果)。
当我在另一台 M1 Mac 上测试它时,我意识到这是 Docker 的 M1 问题。但可以吗?有什么路线吗?
【问题讨论】:
-
此版本的 Macbook 使用端口 5000。您是否尝试在其他端口上运行 Docker 容器?
docker run -d -p 5001:5000 quick-test? -
是的,我做到了。先上 8080,再上 5001 和一些 5000 以上的随机端口。没用。
标签: python docker flask apple-m1