Существует приложение Python для машинного обучения, которое разработчик запустил в докере. В частности, экземпляр контейнера Azure. Они используют micromamba:0.15.3 и внутри dockerfile также устанавливают nginx для веб-сервера.
Файл Docker в конце запустится: CMD ["./start.sh"]
и скрипт внутри:
service nginx start
streamlit run app.py --theme.base "dark" --server.address localhost --server.port 5000 --server.enableCORS=false
Также я видел, что они используют анаконду локально для запуска веб-приложения. Это также работает в потоковом режиме
Теперь я бы избавился от части nginx в файле докеров, так как буду переходить на k8s и буду использовать контроллер nginx ingress + ingres в качестве виртуального хоста, который будет указывать на работающую службу python.
Какой образ Docker я должен использовать для этого? в чем разница между использованием официального образа conda, miniconda или python? Разве мне не нужно просто изображение Python, куда вы можете добавить поток, например здесь?
Вы правы, вы можете создать простое приложение Dockerized, полученное из официального образа Python, создать виртуальную среду и установить файл requirements.txt на этапе сборки в среду для Streamlit и других зависимостей. Anaconda и Miniconda просто обертывают управление виртуальными средами Python. Если вместо requirements.txt есть файл environment.yml, вы можете использовать conda create -f environment.yml
для создания среды в контейнере Docker.