Size: a a a

2018 September 21

vK

vitaliy Kopachyov in Node.js SPb
зачем один докер image? по имеджу на сервис.
источник

R

Ruslan in Node.js SPb
vitaliy Kopachyov
ну так человеку не разрабатывать а деплоить нужно
да, docker-compose это про деплой.
А мне всё же хочется и разработку и деплой выстроить таким образом:
- Есть 5 репозиториев - 3 разных api (на разных языках), 1 frontend
- Разработчики работают с репозиториями, там настроенный CI и всё хорошо
- Настал момент релиза - нужно убедиться что все репозитории друг с другом нормально и без багов работают. (все репы в мастере имеют самый актуальный и оттестированный код)
- Я предпологаю что submodules позволят сделать коммит, который "зафиксирует версию" всех сервисов и разработчики продолжат работать в обычном режиме.
- Затем уже эти сервисы раскидываем на разные сервера в production, зная что они будут нормально взаимодействовать (свой docker compose на каждой машине)

При этом и в гугле и в чатах разработчиков вижу не любовь к submodules. Смотрю альтернативы.
источник

R

Ruslan in Node.js SPb
Gleb Azarov
Да при чём тут это) Чувак хочет единный релизный цикл для микросервисной аритектуры. Так делать не надо, это ломает само понятие микросервисов. Если у тебя пока нет чёткого понимания, зачем тебе нужны микросервисы и как ими рулить, то делай просто сервисы в рамках одно репозитория, собирай один большой docker image и через какой-нибудь docker-compose деплой свои сервисы. Только не называй это МИКРОсервисами, это самые обычные сервисы)
Да, Глеб, я согласен, это не микросервисы. Вообще это понятие сложно 100% трактовать.
Это больше сервисы, которые, к сожалению (или к счастью), нельзя сделать единым монолитом.
источник

vK

vitaliy Kopachyov in Node.js SPb
Затем уже эти сервисы раскидываем на разные сервера в production, зная что они будут нормально взаимодействовать (свой docker compose на каждой машине)
источник

vK

vitaliy Kopachyov in Node.js SPb
Вот это как ты себе видишь?
источник

vK

vitaliy Kopachyov in Node.js SPb
тут решений может быть тьма
источник

GA

Gleb Azarov in Node.js SPb
Ruslan
да, docker-compose это про деплой.
А мне всё же хочется и разработку и деплой выстроить таким образом:
- Есть 5 репозиториев - 3 разных api (на разных языках), 1 frontend
- Разработчики работают с репозиториями, там настроенный CI и всё хорошо
- Настал момент релиза - нужно убедиться что все репозитории друг с другом нормально и без багов работают. (все репы в мастере имеют самый актуальный и оттестированный код)
- Я предпологаю что submodules позволят сделать коммит, который "зафиксирует версию" всех сервисов и разработчики продолжат работать в обычном режиме.
- Затем уже эти сервисы раскидываем на разные сервера в production, зная что они будут нормально взаимодействовать (свой docker compose на каждой машине)

При этом и в гугле и в чатах разработчиков вижу не любовь к submodules. Смотрю альтернативы.
В таком случае действительно на CI для master/staging веток репозиториев сервисов собирайте docker image для каждого сервиса и кладите в registry по тегу версии. А в отдельном репе держите docker-compose, в котором прописанны конкретные тэги image'ей. Релиз будет представлять из себя изменение в docker-compose тэгов образов и последущая раскатка.
источник

vK

vitaliy Kopachyov in Node.js SPb
Когда у тебя есть образ докера с протестированным кодом в этом же окружении, ты ему просто говоришь запустись и все. какие репозитории git. от кода до работающего сервиса может быть еще куча всего
источник

R

Ruslan in Node.js SPb
vitaliy Kopachyov
Затем уже эти сервисы раскидываем на разные сервера в production, зная что они будут нормально взаимодействовать (свой docker compose на каждой машине)
Это уже отдельная история :)
Пока пробую понять как организовать разработку, что бы у меня на выходе было 5 контейнеров которые заранее протестированы автотестами и QA.
источник

vK

vitaliy Kopachyov in Node.js SPb
твоя цель это запакованный код в образ.
источник

vK

vitaliy Kopachyov in Node.js SPb
на основе образа запускаешь контейнер там гоняешь тесты линтер и что там тебе еще нужно. если все ок разворачиваешь контейнра из образа на проде
источник

R

Ruslan in Node.js SPb
Gleb Azarov
В таком случае действительно на CI для master/staging веток репозиториев сервисов собирайте docker image для каждого сервиса и кладите в registry по тегу версии. А в отдельном репе держите docker-compose, в котором прописанны конкретные тэги image'ей. Релиз будет представлять из себя изменение в docker-compose тэгов образов и последущая раскатка.
Да, смотрю сейчас в том числе и на локальный docker registry, в котором всё хранить по тегам.
За идею про конкретные теги imag'ей спасибо. По сути тот же фикс версии
источник

vK

vitaliy Kopachyov in Node.js SPb
используя регистри ты получаешь не версии кода а версии готовых сервисов с окружением.
источник

R

Ruslan in Node.js SPb
vitaliy Kopachyov
используя регистри ты получаешь не версии кода а версии готовых сервисов с окружением.
Да, и это то что мне надо, infrastructure as a code – в каждом отдельно взятом репозитории сервиса есть Dockerfile, который гарантирует что этот контейнер сбилдится и этот код в нём будет работать.
Потом только интеграционное тестирование, но это тоже отдельная история.
источник

R

Ruslan in Node.js SPb
И всё же история ушла глубже, я просто хотел понять чем плохи git submodules 😁
источник

vK

vitaliy Kopachyov in Node.js SPb
тем что это вчерашний день
источник

vK

vitaliy Kopachyov in Node.js SPb
ну или их прменение сузилось до более конкретных кейсов
источник

R

Ruslan in Node.js SPb
vitaliy Kopachyov
тем что это вчерашний день
но ведь это не аргумент. Мы по прежнему пишем скрипты на баш, хотя сколько он уже существует
источник

А

Александр in Node.js SPb
vitaliy Kopachyov
тем что это вчерашний день
молоток изобретён кучу лет назад, он устарел и не выполняет своих функций от этого?
источник

GA

Gleb Azarov in Node.js SPb
Ну просто поддержка этого дела гораздо больнее, чем работа через registry (хотя у registry заморочно настраивать права доступа)
источник