【问题标题】:Docker container in Azure /bin/sh: 1: [gunicorn,: not foundAzure /bin/sh 中的 Docker 容器:1:[gunicorn,:未找到
【发布时间】:2021-09-08 06:59:22
【问题描述】:

我有以下问题:

我有一个用 Python 编写的小型网络应用程序。我在 docker 容器中运行它。在本地,Web 应用程序运行良好。当我将容器部署到 Azure App Service 时,出现以下错误:

2021-09-07T15:11:32.980846527Z /bin/sh: 1: [gunicorn,: not found

这是我的 Dockerfile

FROM python:3.8-slim-buster

EXPOSE 5000

ENV PYTHONDONTWRITEBYTECODE=1

ENV PYTHONUNBUFFERED=1

COPY requirements.txt .
RUN python -m pip install -r requirements.txt

WORKDIR /app
COPY . /app

RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app
USER appuser

CMD ["gunicorn", "--bind", "0.0.0.0:5000", "dash_app\dashboard:server"]

这里是 requirements.txt

flask
gunicorn
dash
pandas

我是 docker 和 python 的新手。据我了解, pip install 应该在容器本身中安装 requirements.txt 中所有内容的最新版本。我不明白为什么找不到独角兽。

任何帮助将不胜感激。

【问题讨论】:

  • 该错误通常意味着您的 CMD 语法实际上不是有效的 JSON 数组。在这里,我猜 \d 不是有效的反斜杠转义;你需要\\ 来转义反斜杠,还是使用Python 包名dash_app.dashboard:server
  • @HeadInTheClouds,你能解决这个问题吗?

标签: python azure docker


【解决方案1】:

来自docs

如果您想在没有 shell 的情况下运行 <command>,则必须将命令表示为 JSON 数组并提供可执行文件的完整路径。此数组形式是CMD 的首选格式。任何附加参数都必须单独表示为数组中的字符串。

也就是说,你应该提供gunicorn可执行文件的完整路径,或者使用shell格式:

CMD gunicorn --bind 0.0.0.0:5000 dash_app\dashboard:server

【讨论】:

    猜你喜欢
    • 2021-03-26
    • 1970-01-01
    • 2019-02-01
    • 2017-10-20
    • 2017-02-07
    • 2021-07-24
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    相关资源
    最近更新 更多