Docker 镜像错误:“/bin/sh: 1: [python,: not found”
Posted
技术标签:
【中文标题】Docker 镜像错误:“/bin/sh: 1: [python,: not found”【英文标题】:Docker image error: "/bin/sh: 1: [python,: not found" 【发布时间】:2015-12-18 23:18:10 【问题描述】:我正在基于标准 Ubuntu 14.04 映像构建一个新的 Docker 映像。
这是我的 Dockerfile:
FROM ubuntu:14.04
RUN apt-get update -y
RUN apt-get install -y nginx git python-setuptools python-dev
RUN easy_install pip
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt # only 'django' for now
ENV projectname myproject
EXPOSE 80 8000
WORKDIR $projectname
CMD ['python', 'manage.py', 'runserver', '0.0.0.0:80']
当我尝试运行此映像时,我收到此错误...
/bin/sh: 1: [python,: 未找到
但如果我在运行映像时打开 shell,运行 python
会按预期打开交互式提示。
为什么我不能在 Dockerfile 中通过CMD
调用python
?
【问题讨论】:
您是否尝试在 CMD 中使用"
而不是 '
?
你需要先安装python
@AleksandrKovalev Facepalm。谢谢。
@E-ebolavirus 不,这不是问题所在。 Python 已安装。我可以通过将单引号更改为双引号来很好地调用它。
【参考方案1】:
我有同样的错误。但就我而言,这是命令中的语法错误。
我缺少逗号“,”CMD ["python" "app.py"]
而不是CMD ["python", "app.py"]
在这种情况下,验证 yaml 文件格式会有所帮助。可以使用任何在线yaml validator。
【讨论】:
【参考方案2】:我有类似的问题,但在我的情况下,docker run 命令中没有任何'
或"
字符。
但是我找到了解决该问题的解决方案,并且将来可能会在类似情况下对您有所帮助:
-
从 Dockerfile 中清除所有不必要的空白字符
从此 Dockerfile 中清除所有缓存的图像
构建并运行新映像
如果你不清除缓存的图像,docker 将使用带有一些疯狂空白字符的缓存图像,这与线程主题创建的错误消息相同。
【讨论】:
你为我节省了很多时间【参考方案3】:我通过更改解决了我在 Mac 上的问题
CMD ["python", "app.py"]
到
CMD python app.py
【讨论】:
【参考方案4】:在 CMD 中使用 "
而不是 '
。 (Documentation)
【讨论】:
docker-compose build
也是必要的,在更改文件后。以上是关于Docker 镜像错误:“/bin/sh: 1: [python,: not found”的主要内容,如果未能解决你的问题,请参考以下文章
Heroku:错误 - /bin/sh:1:npm:部署到 Heroku 时未找到
GAE 错误 :- /bin/sh: 1: exec: gunicorn: not found