无效命令“ / bin / sh ”:找不到文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无效命令“ / bin / sh ”:找不到文件相关的知识,希望对你有一定的参考价值。
我有一个Dockerfile与
CMD exec gunicorn --bind 8080 --workers 1 --threads 8 --timeout 0 app:app
失败,并显示错误:Invalid command \"/bin/sh\": file not found
但是同一条命令是这样运行的:
RUN gunicorn --bind 8080 --workers 1 --threads 8 --timeout 0 app:app
可能出什么事了?
Dockerfile:
# Dockerfile
FROM penguicky/docker-python3-opencv
ENV APP_HOME /app
WORKDIR $APP_HOME
RUN apt-get update
RUN apt-get install -y libsm6 libxext6 libxrender-dev
RUN pip3 install Flask gunicorn
RUN pip3 install opencv-contrib-python
EXPOSE 8080
#RUN echo $CV_VERSION
COPY . ./
CMD exec gunicorn --bind 8080 --workers 1 --threads 8 --timeout 0 app:app
更新
我尝试使用这种方式:
CMD ["gunicorn", "--bind", "8080", "--workers", "1" ,"--threads", "8", "--timeout", "0" ,"app:app"]
现在我明白了:
2020-06-02 22:03:27.511 EEST[2020-06-02 19:03:27 +0000] [1] [INFO] Starting gunicorn 20.0.4
2020-06-02 22:03:27.513 EEST[2020-06-02 19:03:27 +0000] [1] [ERROR] Invalid address: ('8080', 8000)
Update2:
所以它可以这样工作:
CMD ["gunicorn", "--bind", "0.0.0.0:8080", "--workers", "1" ,"--threads", "8", "--timeout", "0" ,"app:app"]
但是我不知道为什么它会这样工作。
答案
如果检查--bind
的gunicorn
标志,则表示为指定要绑定的服务器套接字。服务器套接字可以是$HOST
,$HOST:$PORT
,fd://$FD
或unix:$PATH
中的任何一个。 IP
是有效的$HOST
并且根据上述标记,您在指定该标记时需要提及整个IP。
这是NOT,因为仅提到了8080
端口。
CMD ["gunicorn", "--bind", "8080", "--workers", "1" ,"--threads", "8", "--timeout", "0" ,"app:app"]
1以下有效,因为提到了整个IP
。
CMD ["gunicorn", "--bind", "0.0.0.0:8080", "--workers", "1" ,"--threads", "8", "--timeout", "0" ,"app:app"]
以上是关于无效命令“ / bin / sh ”:找不到文件的主要内容,如果未能解决你的问题,请参考以下文章
获取错误:/ bin / sh scriptcs:找不到命令
Docker / bin / sh:1 ::找不到miniconda3