169 похожих чатов

Коллеги, есть вопрос по docker и R... Сейчас у меня

все происходит следующим образом:
1. Пишется shiny приложение на Mac, тестируется и запускается прямо из RStudio
2. Формируется dockerfile, куда попадают необходимые библиотеки R
3. При сборке образа на Linux сервере может возникать ошибка о том, что нет какой то библиотеки, которую нужно добавить руками в dockerfile, бывает так, что это обнаруживается уже только при запуске контейнера и тестировании
4. Возврат на п.2 цикл пвоторяется пока все зависимости не будут указаны в dockerfile

Все это очень долго т.к. образ в каждый раз пересобирается заново. Есть ли какая-то более красивая практика определения зависимостей? При этом иногда речь идет о библиотеках linux, а иногда пакет, который вроде должен автоматом загружаться, что происходит скрыто при работе в RStudio (пакет даже не грузится в сессию) т.е. нехватку такого пакета получается отловить уже только на тестировании интерфейса (только что с ggpp такое было.

35 ответов

17 просмотров

В докере можно папки перекидывать между образами. Грубо говоря, вы один раз компилируете все пакеты для R в тестовом образе и потом копируете их в основной. В основном образе просто ставится R и системные библиотеки, а все пакеты R копируются из тестового. Более-менее стабильно это работает, когда у вас конкретная версия R ставится и ОС одна и та же Конечно, если вам для приложения нужен N+1 пакет, то процедура повторяется. Но зато при пересборке докера не надо каждый раз все компилировать

Я в докере еще использовал пакет pak, он так красиво все в консоль репортил без лишних слов и все зависимости тоже сам подтягивал

https://arxiv.org/pdf/2103.08069.pdf https://www.rstudio.com/products/package-manager/ https://www.jumpingrivers.com/blog/faster-r-package-installation-rstudio/ в докерах можно по слоям раскидывать...

Dm-Kb Автор вопроса
Ed P
В докере можно папки перекидывать между образами. ...

у меня как раз проблема в том, что хочется понять заведомо, что нужно для того чтобы успешно собрать и скомпилировать все пакеты

Dm Kb
у меня как раз проблема в том, что хочется понять ...

А посмотрите все же pak. Я понял, о чем вы говорите, но ни разу не пытался автоматизировать. https://cran.r-project.org/web/packages/pak/pak.pdf local_system_requirements - не то, случайно?

Dm-Kb Автор вопроса
Dm Kb
у меня как раз проблема в том, что хочется понять ...

а что не сделать это на линуховой машине заранее? набор пакетов, как правило, достаточно устаканен. просто для публикации в прод постоянно использовать новые пакеты с новыми системными либами — такой себе подход. нет людей, которые все 10К пакетов использовали бы. пакетный хаос на проде — это, в первую очередь, административная проблема.

Ilya Shutov
а что не сделать это на линуховой машине заранее? ...

Логичнее делать свой репозиторий. Я такой делаю периодически (в конце месяца). Вместо установки всего. Плюс скачиваю системные либы под конкретный дистрибутив Линукса.

Stan
Логичнее делать свой репозиторий. Я такой делаю пе...

так вопрос в том, как заранее узнать, какие либы нужны, насколько я понял. ну т.е. можно, конечно, в error log смотреть, но это такое

Ed P
так вопрос в том, как заранее узнать, какие либы н...

один раз просто взять и поставить. пакеты все подскажут тупо до безобразия

Stan
Обычно нужны openssl, xml2 и подобные

а потом вы захотите поставить magick или rgl и УПС

Ed P
а потом вы захотите поставить magick или rgl и УПС

Ничего страшного. Сразу из Синаптика вытаскиваем файлы установщиков.

Dm-Kb Автор вопроса
Ilya Shutov
а что не сделать это на линуховой машине заранее? ...

можно конечно и таким путем пойти т.е. брать чистую машинку linux и на на ней собирать все проблемы с установкой пакетов , но как -то громоздко

Stan
Ничего страшного. Сразу из Синаптика вытаскиваем ф...

я не понял. Когда вы ставите R-овские пакеты, то зависимости между пакетами автоматически подтягиваются. Вопрос в том, как аналогично доустанавливать системыне либы. вот pak это вроде умеет делать

Dm Kb
можно конечно и таким путем пойти т.е. брать чисту...

это только в теории громоздко. один раз сходите по пути, соберите себе свой .dockerfile и все.

Dm-Kb Автор вопроса
Ed P
я не понял. Когда вы ставите R-овские пакеты, то ...

Когда Вас занесло в мир линуксов, системные функции грузятся из штатных репозиториев линуксов. Тогда приходится озаботиться еще и этим вопросом. Особенно в дебиане. Все же компилируется всю дорогу.

Stan
Когда Вас занесло в мир линуксов, системные функци...

вы не понимаете задачу, как мне кажется. pak ставит линуксовые пакеты из штатных репозиториев с помощью execute. Т.е. вам не надо ДО установки пакетов ставить системные либы. Надо только проверить, нужны ли вашим пакетам какие-то системные зависимости и установить их до установки пакетов с помощью pak

Dm-Kb Автор вопроса
Ilya Shutov
это только в теории громоздко. один раз сходите по...

у меня проекты слишком сильно отличаются и пакеты нужны очень разные: это не я такой, это жизнь такая )) т.е. я dockerfile сильно переписываю в каждый раз

Dm-Kb Автор вопроса
Ilya Shutov
https://arxiv.org/pdf/2103.08069.pdf https://www.r...

в третьей ссылке есть раздел "Using Ubuntu Binaries" вопрос, а почему его бы не использовать? есть какие-то подводные камни?

Dm Kb
у меня проекты слишком сильно отличаются и пакеты ...

оставить все что нужно и не переписывать. Не так уж много надо. Это только prophet гигабайты потребляет

Dm Kb
в третьей ссылке есть раздел "Using Ubuntu Binarie...

камни есть везде. просто попробуйте в своем окружении.

Dm-Kb Автор вопроса
Ilya Shutov
оставить все что нужно и не переписывать. Не так у...

ну вот я сегодня добавил leaflet, но тащить его в другой проект, где нет картографии - это не очень хорошо

Dm Kb
ну вот я сегодня добавил leaflet, но тащить его в ...

играйте по-крупному, не мелочитесь. Вы тут штрихи подправляете, а там бигдата терабайтами кушает и не стесняется. пусть в пассиве на диске лежит — 1 Мб жалко? реально, проблема высосана из пальца. есть 100500 важных вопросов над которыми думать надо и стоит.

Dm-Kb Автор вопроса
Ilya Shutov
играйте по-крупному, не мелочитесь. Вы тут штрихи ...

ну может и так))) хотя вариант с тем чтобы заведомо определить зависимости мне нравится больше, он как то больше согласуется с моим ощущением прекрасного

Dm Kb
ну может и так))) хотя вариант с тем чтобы заведом...

пишите прекрасный код — это мало кто умеет делать. пусть такси водят таксисты.

Dm-Kb Автор вопроса
Ilya Shutov
пишите прекрасный код — это мало кто умеет делать....

да я как раз не про код больше )) я больше про доказательство того, что идея работает или не работает

Dm Kb
да я как раз не про код больше )) я больше про док...

можно спутать чувство прекрасного с обычной прокрастинацией

Dm-Kb Автор вопроса
Ilya Shutov
можно спутать чувство прекрасного с обычной прокра...

Именно поэтому я задал вопрос уже когда все сделал чтобы не сбивать настрой

Dm Kb
Именно поэтому я задал вопрос уже когда все сделал...

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

Dm Kb
Именно поэтому я задал вопрос уже когда все сделал...

оно может немного грубо, но стоит отделять важное от неважного. оценивать реальный вклад доработок в общий результат. devops — это непросто. там одним советом не обойтись. Если готовы вкачивать сотни человеко-часов — тогда стоит разбираться.

Dm-Kb Автор вопроса
Ilya Shutov
оно может немного грубо, но стоит отделять важное ...

для меня devops - это третья важность, но в целом я удовлетворен дискуссией, как минимум стоит подумать о трех вещах: 1. использовать pak 2. использовать бинарники 3. откармливать свой "толстый" dockerfile от проекта к проекту ВСЕМ СПАСИБО 🙏

Похожие вопросы

Обсуждают сегодня

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Ребят, что лучше для реверса: гидра или ида?
En Vind Av Sorg
22
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
Делаю велосипед логгер. К сообщению хочу прикрутить некоторую информацию, типа, кем отправлено, какой уровень, и всякое такое. И тут подумалось мне, почему бы не хранить весь...
Serjone
24
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
а не подскажете вот это скрин из какой IDE ?
Iluha Companets
14
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
Сегодня у себя обнаружил Holodeck-2_8_0.exe (48.5 Mb). Вопрос: откуда он у меня взялся?
楽園松本
8
Народ всем привет Подскажите, как включить самописные dll библиотеки в итоговую сборку Сейчас при запуске dev сервера локально формируется папка build, из которой запускается...
Андрей
4
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
Карта сайта