#python #azure #docker
Вопрос:
У меня есть следующая проблема:
У меня есть небольшое веб-приложение, написанное на Python. Я запускаю его в контейнере docker. Локально веб — приложение работает нормально. При развертывании контейнера в службе приложений Azure я получаю следующую ошибку:
2021-09-07T15:11:32.980846527Z /bin/sh: 1: [gunicorn,: not found
Вот мой док-файл
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 amp;amp; chown -R appuser /app
USER appuser
CMD ["gunicorn", "--bind", "0.0.0.0:5000", "dash_appdashboard:server"]
И вот это requirements.txt
flask
gunicorn
dash
pandas
Я новичок в docker и python. Насколько я понимаю, pip install должен установить последнюю версию всего, начиная с requirements.txt в самом контейнере. Я не понимаю, почему нельзя найти пушечный корн.
Любая помощь будет очень признательна.
Комментарии:
1. Эта ошибка обычно означает, что ваш
CMD
синтаксис на самом деле не является допустимым массивом JSON. Здесь я предполагаюd
, что это недопустимая обратная косая черта; вам нужно избежать\
обратной косой черты или использовать имя пакета Pythondash_app.dashboard:server
?2. @HeadInTheClouds, вы смогли решить эту проблему?
Ответ №1:
Из документов:
Если вы хотите запустить свой
<command>
без оболочки, то вы должны выразить команду в виде массива JSON и указать полный путь к исполняемому файлу. Эта форма массива является предпочтительным форматомCMD
. Любые дополнительные параметры должны быть индивидуально выражены в виде строк в массиве.
То есть вы должны указать полный путь к gunicorn
исполняемому файлу или использовать формат оболочки:
CMD gunicorn --bind 0.0.0.0:5000 dash_appdashboard:server