gunicorn не обнаружен при запуске док-контейнера с venv - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь запустить контейнер Docker, который выдает сообщение об ошибке: /bin/sh: gunicorn: not found.Запуск сервера локально без Docker работает нормально.И построение изображения также работает нормально.Я новичок в Docker, поэтому я не знаю, выглядит ли что-нибудь странное в моем Dockerfile ..

Мой Dockerfile:

FROM python:3.7-alpine

RUN adduser -D teamreacher
WORKDIR /home/teamreacher

# copy and install dependencies
COPY ./requirements.txt requirements.txt
RUN python -m venv venv
RUN venv/bin/pip install --upgrade pip
RUN venv/bin/pip install -r requirements.txt

# copy the app
COPY . .
RUN chmod +x boot.sh

RUN chown -R teamreacher:teamreacher ./
USER teamreacher

# expose port and run server
EXPOSE 5000

RUN source venv/bin/activate
CMD gunicorn -b :5000 --access-logfile - --error-logfile - wsgi:app

И мои требования.txt:

Flask==1.0.2
Flask-RESTful==0.3.6
Flask-SQLAlchemy==2.3.2
Flask-JWT==0.3.2
Flask-Cors==3.0.7
gunicorn==19.9.0

1 Ответ

0 голосов
/ 13 декабря 2018

Команда RUN создает слой, это все равно что запускать команду в новой оболочке.Когда он завершается, «оболочка» завершается.Таким образом, любые последующие команды не будут затронуты.

Вы можете добавить сценарий оболочки (startup.sh), например,

#!/bin/sh
source venv/bin/activate
gunicorn -b :5000 --access-logfile - --error-logfile - wsgi:app

, затем CMD ["./startup.sh"]

PS:

Интерес малодля использования виртуального env в Docker-контейнере.Контейнер уже является изолированной средой, и он должен делать только одно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...