我正在尝试根据此链接中的第一个示例在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的ENTRYPOINT
和CMD
(和RUN
)行必须是有效的JSON数组,并遵守JSON的所有语法规则,包括单词周围的双引号"
。如果不是,那么Docker会静默地将它们解释为shell命令。
您可能只想使用双引号将它们组合成一个CMD
行:
# No ENTRYPOINT
CMD ["python", "main.py"]
如您所愿,由于单引号不是有效的JSON,因此Docker分别将ENTRYPOINT
和CMD
字符串包装在sh -c
包装器中,然后将它们串联在一起。这会导致您在docker ps
输出中看到奇怪的命令字符串,而运行它会导致错误。
关于python - 在Mac上退出Docker状态(127),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62615082/