【问题标题】:Docker image error: "/bin/sh: 1: [python,: not found"Docker 镜像错误:“/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 已安装。我可以通过将单引号更改为双引号来很好地调用它。

标签: python django ubuntu docker dockerfile


【解决方案1】:

我有同样的错误。但就我而言,这是命令中的语法错误。
我缺少逗号“,”
CMD ["python" "app.py"]
而不是
CMD ["python", "app.py"]

在这种情况下,验证 yaml 文件格式会有所帮助。可以使用任何在线yaml validator

【讨论】:

    【解决方案2】:

    我有类似的问题,但在我的情况下,docker run 命令中没有任何'" 字符。 但是我找到了解决该问题的解决方案,并且将来可能会在类似情况下对您有所帮助:

    1. 从 Dockerfile 中清除所有不必要的空白字符
    2. 从此 Dockerfile 中清除所有缓存的图像
    3. 构建并运行新映像

    如果你不清除缓存的图像,docker 将使用带有一些疯狂空白字符的缓存图像,这与线程主题创建的错误消息相同。

    【讨论】:

    • 你为我节省了很多时间
    【解决方案3】:

    我通过更改解决了我在 Mac 上的问题

    CMD ["python", "app.py"]
    

    CMD python app.py
    

    【讨论】:

      【解决方案4】:

      在 CMD 中使用 " 而不是 '(Documentation)

      【讨论】:

      • docker-compose build 也是必要的,在更改文件后。
      猜你喜欢
      • 2019-09-11
      • 2020-07-28
      • 1970-01-01
      • 2018-06-06
      • 1970-01-01
      • 2021-10-20
      • 1970-01-01
      • 2015-09-29
      • 1970-01-01
      相关资源
      最近更新 更多