Size: a a a

RU.Docker — Официальное Русское Сообщество

2021 January 17

SB

Sergg Bobrov in RU.Docker — Официальное Русское Сообщество
Друзья, кто-нибудь работал с контейниризацией node-js микросервисов? Необходимо собрать несколько сервисов из одного репозитория, зависимости у них прописаны в одном package.json и соответсвенно каждому контейнеру нужны свои зависимости, как их передать в контейнер? Есть вариант хранить node_modules в общем томе и прокидывать через volume либо для каждого контейнера устанавливать свои зависимости из разных package.json, но техлид эти варианты отмёл.  Общаются сервисы по очередям, через воркеров bullMQ, кеширует redis. Хз, что он хочет ещё. Какие вообще best practice существуют по архитектуре микросервисов?

"один репозиторий на все 3 приложения (http server + 2 ms)
- 1 package.json
- три разных Dockerfile, для каждого мс
- 1 общий docker-compose.yml
- volumes - нет"
такие вводные
источник

VC

Vladimir Chernyshev in RU.Docker — Официальное Русское Сообщество
Выглядит как задача для какого-нибудь ng
источник

VC

Vladimir Chernyshev in RU.Docker — Официальное Русское Сообщество
Но вообще меня поражает всегда стремления делать микросервисы но с одним файлом зависимостей
источник

VC

Vladimir Chernyshev in RU.Docker — Официальное Русское Сообщество
Их суть в независимости
источник

VC

Vladimir Chernyshev in RU.Docker — Официальное Русское Сообщество
Lerna ещё можно посмотреть, в общем менеджеры монорепозиториев под году или просто гибкие.
источник

VC

Vladimir Chernyshev in RU.Docker — Официальное Русское Сообщество
Или вон как у на моем проекте новом никак не разгребу: для каждого сервиса общий package.Jason патчится при сборке
источник

AS

Artyom Sveshnikov in RU.Docker — Официальное Русское Сообщество
Sergg Bobrov
Друзья, кто-нибудь работал с контейниризацией node-js микросервисов? Необходимо собрать несколько сервисов из одного репозитория, зависимости у них прописаны в одном package.json и соответсвенно каждому контейнеру нужны свои зависимости, как их передать в контейнер? Есть вариант хранить node_modules в общем томе и прокидывать через volume либо для каждого контейнера устанавливать свои зависимости из разных package.json, но техлид эти варианты отмёл.  Общаются сервисы по очередям, через воркеров bullMQ, кеширует redis. Хз, что он хочет ещё. Какие вообще best practice существуют по архитектуре микросервисов?

"один репозиторий на все 3 приложения (http server + 2 ms)
- 1 package.json
- три разных Dockerfile, для каждого мс
- 1 общий docker-compose.yml
- volumes - нет"
такие вводные
Подкорректируй Dockerfile.
Тебе нужна многоступенчатая сборка.
На первом этапе ты копируешь исходники.
Выполняешь ровно 2 команды:
npm ci && npm run build
Создаётся production build.
На втором этапе используешь в качестве базового образа nginx. Копируешь из предыдущего этапа собранное приложение в default site
источник

SB

Sergg Bobrov in RU.Docker — Официальное Русское Сообщество
Artyom Sveshnikov
Подкорректируй Dockerfile.
Тебе нужна многоступенчатая сборка.
На первом этапе ты копируешь исходники.
Выполняешь ровно 2 команды:
npm ci && npm run build
Создаётся production build.
На втором этапе используешь в качестве базового образа nginx. Копируешь из предыдущего этапа собранное приложение в default site
сложновато звучит для меня :( Мне кажется что от меня хотят какое-то более просто и прямолинейное решение задачи.
источник

AS

Artyom Sveshnikov in RU.Docker — Официальное Русское Сообщество
Sergg Bobrov
сложновато звучит для меня :( Мне кажется что от меня хотят какое-то более просто и прямолинейное решение задачи.
Вот пример:
https://gist.github.com/anonymous/0bd28c5a53a61d8850433f62f6cf85de#file-dockerfile
yarn можно заменить на npm
источник

RU

Roman Usherenko in RU.Docker — Официальное Русское Сообщество
Sergg Bobrov
сложновато звучит для меня :( Мне кажется что от меня хотят какое-то более просто и прямолинейное решение задачи.
это что тестовое задание?)
источник

SB

Sergg Bobrov in RU.Docker — Официальное Русское Сообщество
Roman Usherenko
это что тестовое задание?)
Не тестовое, но в какой-то степени учебное
источник

RU

Roman Usherenko in RU.Docker — Официальное Русское Сообщество
Sergg Bobrov
Не тестовое, но в какой-то степени учебное
надо не передавать зависимости внутрь, а билдить. просто каждый отдельно билдить
источник
2021 January 18

СП

Сергей Плесовских... in RU.Docker — Официальное Русское Сообщество
Доброго времени коллеги, подскажите каким альтернативным инструментом можно было бы заменить supervisor в контейнере
источник

VC

Vladimir Chernyshev in RU.Docker — Официальное Русское Сообщество
Сергей Плесовских
Доброго времени коллеги, подскажите каким альтернативным инструментом можно было бы заменить supervisor в контейнере
двумя контейнерами?
источник

СП

Сергей Плесовских... in RU.Docker — Официальное Русское Сообщество
Vladimir Chernyshev
двумя контейнерами?
может есть наповерхности другой вариант но я его не вижу , если в кратце, есть контейнер Symfony PHP в котором в данный момент запускается множество команд считывающих очередь из Rebbitmq
источник

VC

Vladimir Chernyshev in RU.Docker — Официальное Русское Сообщество
Сергей Плесовских
может есть наповерхности другой вариант но я его не вижу , если в кратце, есть контейнер Symfony PHP в котором в данный момент запускается множество команд считывающих очередь из Rebbitmq
ясегодня отвечал на этот вопрос уже )
источник

VC

Vladimir Chernyshev in RU.Docker — Официальное Русское Сообщество
в соседнем чате
источник

СП

Сергей Плесовских... in RU.Docker — Официальное Русское Сообщество
аа ну да)
источник

СП

Сергей Плесовских... in RU.Docker — Официальное Русское Сообщество
только это не решит проблему,  запуск воркера происходит из кода приложения если использовать registry то по предложенной схеме придётся в каждый контейнер ложить код приложения
источник

VC

Vladimir Chernyshev in RU.Docker — Официальное Русское Сообщество
ну да, более того один образ просто разные кмд
источник