Команда RUN
создает слой, это все равно что запускать команду в новой оболочке.Когда он завершается, «оболочка» завершается.Таким образом, любые последующие команды не будут затронуты.
Вы можете добавить сценарий оболочки (startup.sh), например,
#!/bin/sh
source venv/bin/activate
gunicorn -b :5000 --access-logfile - --error-logfile - wsgi:app
, затем CMD ["./startup.sh"]
PS:
Интерес малодля использования виртуального env в Docker-контейнере.Контейнер уже является изолированной средой, и он должен делать только одно.