Anonymous
тебя именно стадия build интересует ? CI/CD какой ? Не dind ?
Andrey
ну хз, у своих я вот частого изменения package.json не вижу. обычно - выкатили фичу - новый p*.js* потом пара багфиксов с тем же p*.js*
А я правильно понимаю что если package.json не изменился, то docker это поймет даже после COPY package*.json ./ и не будет пересобирать этот слой?
Anonymous
у меня так.
Andrey
да
а это варик тогда, спасибо!
Anonymous
билд именно. commit -> build -> deploy to test
nodejs бывают 2х типов - компилируем статику и используем multistage у нас серверное приложение и node_modules нужно сохранить.
Andrey
nodejs бывают 2х типов - компилируем статику и используем multistage у нас серверное приложение и node_modules нужно сохранить.
ааа, понял вопрос. Не, у меня чисто статика с add serve, т.е. вообще никакого серверного js.
Ivan
docker идеально для nodejs, go... но java проекты хавают столько оперативки это ппц.
Andrey
docker идеально для nodejs, go... но java проекты хавают столько оперативки это ппц.
А какая разница в докере она жрет оперативу или на хосте?)
Andrey
там в джаве кстати ключик появился чтобы она брала настройки памяти из cgroups. Хз на сколько оно рабочее, но выглядит удобно
Ivan
и будет java cpu мучать и запускать garbage collector cleanup каждую наносекунду
Ivan
такое приложение монолит java, 100 потоков, и жрет память...
Andrey
такое приложение монолит java, 100 потоков, и жрет память...
ну так и в чем разница, в докере оно упадет или на хосте?
Ivan
xmx - The flag Xmx specifies the maximum memory allocation pool for a Java virtual machine (JVM), while Xms specifies the initial memory allocation pool.
Anonymous
xmx - The flag Xmx specifies the maximum memory allocation pool for a Java virtual machine (JVM), while Xms specifies the initial memory allocation pool.
между тем, у меня всякая java жрёт virtual память, пока ей некий env параметр не подставишь. если подходит под твою проблему - параметр напишу.
Ivan
найди плиз может поможет
Anonymous
найди плиз может поможет
повторю вопрос еще раз - какую именно память жрёт java
Ivan
смотрел профайлером там гиг уходит на простые типы типа: int, int[], byte, byte[]....
Anonymous
скрин из top давай посмотрим. лучше с хоста
Ivan
это на работе, дома нету доступа
Andrey
смотрел профайлером там гиг уходит на простые типы типа: int, int[], byte, byte[]....
причем тут докер? Ей не велика разница где память жрать, в докере или на хосте
Anonymous
память бывает 3х типов: virtual resident shared ну это то, что в top отражается, не будем к словам придираться. ну будет понимание проблемы - хайлайть.
Anonymous
может лучше с утечками разобраться ? ну или рестартовать его раз в N-времени ?
Andrey
так это снова не про докер 😄
Ivan
так это снова не про докер 😄
а слово маштабировать? 😘
Anonymous
а слово маштабировать? 😘
а каких именно ресурсов вам не хватает ?
Andrey
а слово маштабировать? 😘
Ну опять же. Наклепай 10 процессов джавы да живи с ними 😄 Я не понимаю, какой у тебя вопрос. Ну течет она, она везде течь будет если приложение такое. Докер тебе только может дать возможность перезапускать приложение при превышении лимитов. Но имхо это подорожник
Anonymous
а каких именно ресурсов вам не хватает ?
В общем, Иван, определись - что тебе именно нужно. Масштабировать тебе скорее всего не нужно. Если нужно - ты должен понять - почему именно нужно и что именно ты должен масштабировать. Пока у тебя облако в штанах.
Anonymous
то, что ты тут написал https://t.me/docker_ru/82680 это хрень именно то самое облако - у тебя утечки памяти и это причина масштабироваться ? ну тогда иди в кубернетес. Но я бы сначала с утечками разобрался. Варианты решения выше описаны
Brommie
вернемся к нод модулям, как докер монтирует в смонтированное?))
Andrey
вернемся к нод модулям, как докер монтирует в смонтированное?))
а мы уже разобрались. Он не монтирует. Он кеширует слой и если у тебя package.json не изменился то node_modules не будет пересобрана
Andrey
И вот Vasiliy скинул прям готовую статью по этому поводу: https://medium.com/devschacht/praveen-durairaj-an-exhaustive-guide-to-writing-dockerfiles-for-node-js-web-apps-7b033bcc0b4f
Ivan
volume: .:/app x.conf:/app/x.conf /app/node_modules db-data:/db/data db-data:
Anonymous
а мы уже разобрались. Он не монтирует. Он кеширует слой и если у тебя package.json не изменился то node_modules не будет пересобрана
не-не, там был клёвый вопрос - как подмонтировать node_modules на этапе build, чтобы скачанные и собранные модули закешировались но походу - никак.
Anonymous
вопрос - можно ли volume подцепить на ранней стадии и воспользоваться этим ..
Andrey
вот точно ?
стопудова https://github.com/moby/moby/issues/14080
Andrey
Вот это очевиднее: https://github.com/moby/moby/issues/17745
Anonymous
Вот это очевиднее: https://github.com/moby/moby/issues/17745
не совсем понял на что ты ссылаешься. Можешь конкретный коммент ?
Anonymous
docker это про отдельный сервер. если тебе нужно несколько серверов выбери kubernetes/mesos/swarm/rancher.
Brommie
у нас дев среда
Brommie
надо чтобы код динамично менялся в контейнере
Brommie
а нод_модули не пробрасывались в контейнер с папки с приложением
Brommie
и тут появляется строка /code/node_modules
Brommie
зачем так ?
ибо платформы разные
Andrey
а нод_модули не пробрасывались в контейнер с папки с приложением
оно не заведется так у тебя. node_modules же может не содержать нужных тебе библиотек
Brommie
и бинарники с макоси не работают в контейнере
Anonymous
ибо платформы разные
дык ты в контейнере собираешь или локально или и так и так ? Опиши полностью кейс.
Brommie
я сейчас про локальную среду разработки
Andrey
я сейчас про локальную среду разработки
аааа, емае, так это совсем другой разговор
Brommie
:)
Anonymous
то есть тебе node_modules пробрасывать в контейнер не нужно и поэтому ты на этом месте пустой volume создаёшь, который после остановки контейнера уничтожается. и в чём твой вопрос ?
Andrey
тогда все просто, маунтишь любую директорию с хоста в контейнер и пусть она у тебя будет node_modules. А у nodejs есть ключик для разработки, когда nodejs сам видит изменения и подтягивает их.
Anonymous
он не исчезает
в контейнере после этих команд что пишет ls -l node_modules ?
Brommie
ща, на линуху зайду, 3 мин)
Andrey
и бинарники с макоси не работают в контейнере
смотри, все команды которые ты запускаешь внутри контейнера, они выполняются "под линуксом", не важно какая у тебя ось хоста. Так что тебе просто нужно сделать маунт для node_modules
Anonymous
то есть создаёшь пустой контейнер docker-compose ... volume: docker_node_modules:/code/node_modules —— Dockerfile from ubuntu WORKDIR /code ADD . .
Brommie
у меня дуал бут)
Brommie
на винде торчал)
Anonymous
базовый образ сам выберешь - у тебя будет node наверное.
Brommie
хотя вру
Anonymous
полностью dockerfile и docker-compose
Brommie
контейнер не запустился
Brommie
ща пошаманю
Brommie
чувак похерил код
Brommie
)) уже не могу запустить))