python - 在Mac上退出Docker状态(127)

标签 python docker flask

我正在尝试根据此链接中的第一个示例在Docker容器上设置一个简单的Python Flask服务器(在Mac OS上):
https://towardsdatascience.com/docker-made-easy-for-data-scientists-b32efbc23165
镜像和容器都已创建,没有任何错误,但是容器状态显示为已退出(127):

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS               NAMES
f029880cbc35        126e05e474ef        "/bin/sh -c ['python…"   7 seconds ago       Exited (127) 6 seconds ago                       epic_williams
我已经检查了行尾字符,对于Docker,main.py和requirements.txt,它是LF。
以下是供引用的Docker文件:
FROM python:3.7
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
EXPOSE 5000
ENTRYPOINT ['python']
CMD ['main.py']
有人可以提供有关造成这种情况的信息吗?谢谢。
更新1
按照moctarjallo的建议运行两次,这是输出。
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS               NAMES
33f10ec30c8d        126e05e474ef        "/bin/sh -c ['python…"   5 seconds ago       Exited (127) 4 seconds ago                        great_hamilton
f029880cbc35        126e05e474ef        "/bin/sh -c ['python…"   52 minutes ago      Exited (127) 52 minutes ago                       epic_williams

最佳答案

Docker的ENTRYPOINTCMD(和RUN)行必须是有效的JSON数组,并遵守JSON的所有语法规则,包括单词周围的双引号"。如果不是,那么Doc​​ker会静默地将它们解释为shell命令。
您可能只想使用双引号将它们组合成一个CMD行:

# No ENTRYPOINT
CMD ["python", "main.py"]
如您所愿,由于单引号不是有效的JSON,因此Docker分别将ENTRYPOINTCMD字符串包装在sh -c包装器中,然后将它们串联在一起。这会导致您在docker ps输出中看到奇怪的命令字符串,而运行它会导致错误。

关于python - 在Mac上退出Docker状态(127),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62615082/

相关文章:

python - Flask-admin 批处理操作,通过弹出模式窗口进行参数

python - 使用 python 切片 CSV 中的特定字符

python - 从源文件中获取 conda meta.yaml 的包版本

python - 将文件名追加到 RDD

docker - Docker更改了作为卷装载的本地文件的所有者

python - 创建新对象返回 AttributeError : 'list' object has no attribute '_sa_instance_state'

python - 模块未找到错误 : No module named 'modeling'

bash - 如何在CWL文件中放置两个bash命令?

docker - -v从docker容器中删除了所有数据

python - Flask 在初始化期间无法运行和停止