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

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

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

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

35 ответов

32 просмотра

В докере можно папки перекидывать между образами. Грубо говоря, вы один раз компилируете все пакеты для 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 от проекта к проекту ВСЕМ СПАСИБО 🙏

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

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

Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
48
Всем привет! Скажите, никто не пытался уменьшить размер процесса ssl, которые ассоциируется с открытым соединением (не помню точное название этого процесса, но там была какая-...
Алексей
20
а проверьте, собирается ли у кого сейчас транк лазаря через делюкс? у меня вот: fpcupdeluxe: info: Lazarus Native Installer (BuildModuleCustom: UserIDE): LazBuild: building Us...
Iluha Companets
20
Мне тут приспичило встроить в программу форматировние текста SQL, расставить переносы строк и отступы так, чтобы лучше читалось. Я что-то свое изобразил, оно после ключевых сл...
Sergey Bodrov
11
This is a big issue. Just by being a citizen of a country, you are denied to contribute to Open Source software: https://youtu.be/L5Ec5jrpLVk?si=1iIuHnMPbCB4anV-
Sharuzzaman Ahmat Raslan
72
добрый день. возможно ли изменить цвет окон лазаруса? Как?
Budemposmotret
35
Господа, а кто-нибудь сталкивался с размещением на TTabControl/TTabSheet множества контролов (> 100) с последующими External: Access violation? Вот буквально на ровном месте. ...
Dmitry
29
А какие существуют способы обработки ошибок выделения памяти в ядре? Т.е., допустим, есть функция, которая возвращает адрес свободной страницы в физической памяти и диапазон в...
disba1ancer
51
Добрый день. Опять снова хочу обратиться к вам за помощью. После создания проэкта stack new, lazy.nvim + nvim-lspconfig/haskell-tools + hlint, ormolu из mason + hls из ghcup ...
Nannk
8
Does anyone have some zeroday's left?
Wito!d ♥️🩷
44
Карта сайта