@ru_docker

Страница 180 из 610
Max
06.10.2016
11:14:08
для докер-композа отдельная репа со всем связанным с деплоем
Да, но вопрос как мне получать код из других реп? В sh скрипте делать git clone?

MAdMAx
06.10.2016
11:14:46
1) 1 приложение, 1 репа, докерфайл, докеригнор-файл внутри. Сборка создает образ с приложением и энтрипойтом для запуска. 2) отдельная репа со скриптами деплоя, которая содержит параметры\связи\логику\порядок запуска для каждого контейнера

Evgeny
06.10.2016
11:14:52
я вот не знаю умеет ли делать это композ, но докер умеет делать билд сразу с гит сырца

Max
06.10.2016
11:15:55
@amdmax а что не так? Там интерпритируемые языки

Google
Max
06.10.2016
11:16:01
как нужно?

Evgeny
06.10.2016
11:16:26
сразу в имадж вбилдить

Max
06.10.2016
11:17:24
нужно будет пересобирать имдж каждый раз, нет? А так просто сделал git pull и пересобрал приложение

Anton
06.10.2016
11:17:51
так а версионирование?

Max
06.10.2016
11:18:02
да и код же должен идти отдельно от image-а?

MAdMAx
06.10.2016
11:18:06
нужно будет пересобирать имдж каждый раз, нет? А так просто сделал git pull и пересобрал приложение
докер в этом случае не нужен. запускай просто модули рядом в каталогах на разных портах и будет тебе счастье )

Anton
06.10.2016
11:18:43
> @skmax1 да и код же должен идти отдельно от image-а? нет

Max
06.10.2016
11:19:54
вот примерно, то что я описываю https://www.airpair.com/docker/posts/efficiant-development-workfow-using-git-submodules-and-docker-compose

вот его compose api: image: dockerfile/nodejs volumes: - ./api/:/app/ working_dir: /app/ command: npm start ports: - "8000:8000" links: - database database: image: postgresql dashboard: image: dockerfile/nodejs volumes: - ./dashboard/:/app/ working_dir: /app/ command: npm start ports: - "8001:8001" links: - api cpanel: image: dockerfile/nodejs volumes: - ./api/:/app/ working_dir: /app/ command: npm start ports: - "8002:8002" links: - api

MAdMAx
06.10.2016
11:20:47
Max
06.10.2016
11:22:00
в чем тут проблема? Почему так не нужно делать?

Google
Aleksandr
06.10.2016
11:23:15
в чем тут проблема? Почему так не нужно делать?
еще раз, чтобы не читать: в чем проблема?

Max
06.10.2016
11:24:32
@zelenin почему workflow из этой статьи не нужно использовать ? https://www.airpair.com/docker/posts/efficiant-development-workfow-using-git-submodules-and-docker-compose

чуть выше скинул docker-compose из статьи

MAdMAx
06.10.2016
11:25:07
докер нужен для нескольких вещей: 1. изоляция сред приложений от хостовой системы 2. быстрый деплой 3. масштабируемость и прочая маркетинговая чушь. если у тебя приложение лежит на хостовой системе в отдельной папочке и доступно по отдельному порту - докер не нужен. у докера приложение должно быть внутри образа, для того, чтобы запустив образ на любой другой машине, ты получил тот же результат в том же самом(оттестированном?!) приложении

поэтому в соответсвии с идеологией докера делают так

1) 1 приложение, 1 репа, докерфайл, докеригнор-файл внутри. Сборка создает образ с приложением и энтрипойтом для запуска. 2) отдельная репа со скриптами деплоя, которая содержит параметры\связи\логику\порядок запуска для каждого контейнера

Max
06.10.2016
11:26:38
@amdmax в вольюмах только код приложение. Приложение написано на интерпритерованном языке. Интерпретатор и веб-сервер подключены как отдельные контейнеры

Evgeny
06.10.2016
11:26:56
нет вам смысла докер юзать

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

Max
06.10.2016
11:28:25
@amdmax так почему нет смысла? Я буду получать все выше перечислимые преимущества, разве нет? Да и ещё можно добавить 4. Одинаковая среда при разработке и на продакшн

N
06.10.2016
11:29:49
монтируешь код извне = теряется иммутабельность, основное преимущество контейнеров

Aleksandr
06.10.2016
11:30:09
проблему опиши еще раз. что у тебя есть, что хочешь получить, что не работает.

Max
06.10.2016
11:34:33
@zelenin изначально вопрос был следующий "Да. У меня есть два репо: 1. my-docker - там файл compose.yml, dockerfile, etc, 2. my-app - там код моего приложения. я хочу, на серваке запустить приложение. Я делаю, что-то вроде git clone —recursive my-docker cd my-docker docker-compose up Если я добавлю репо my-app как субмодуль гита, то git clone —recursive скачает его тоже в папку my-docker/my-app. Вроде все отлично, но есть неудобство. Нужно будет каждый раз коммитить в репо с приложением my-app, а потом в репо my-docker принимать этот коммит. Может есть какой-то более удобный вариант, кто как делает?" Но потом перешел в примерно следующее. "Почему нет смысла использовать docker, если работаешь с интерпретируемыми языками и используешь примерно следующий воркфлов http://pastebin.com/THLH8Edw ?"

N
06.10.2016
11:36:04
этот воркфлоу не имеет смысла

сложи докерфайл в основной репо

Aleksandr
06.10.2016
11:36:18
во-первых нет смысла в разных репо держать, если билдишь зависимо друг от друга

MAdMAx
06.10.2016
11:36:37
N
06.10.2016
11:37:02
тебе по третьему кругу объясняют, что ты переусложнил свой вокркфлоу и так никто не делает

Max
06.10.2016
11:37:32
"Если все запихнуть в одну репу, то не будет каши? На практике у меня пока что нет опыта, пытаюсь вот свое приложение первый раз докеризировать. Хочу узнать best-practice. Слышал, что разделять вроде правильно. Ибо у меня могут быть (пока такого нет) несколько модулей. Например backend rest, frontend, auth-service. Они могут быть в разных репо. Да и в my-docker будет много независимых папок вроде данных mysql, redis, elasticsearch, папка с релизами. Они хоть и под игнором, но все же нафиг они там?"

Google
Aleksandr
06.10.2016
11:38:42
разделять правильно для образов, используемых отдельно. для локального композ тебе разделять не надо

Max
06.10.2016
11:39:41
@zelenin ок, тогда в каком образе хранить compose.yml? Если у меня могут быть несколько реп, как я описал выше

N
06.10.2016
11:39:44
для каждого приложения - свой докерфайл в своем репо

Aleksandr
06.10.2016
11:40:08
тебе по третьему кругу объясняют, что ты переусложнил свой вокркфлоу и так никто не делает
я лично не увидел объяснения почему так делать не надо. как мне кажется все дело в этом. упреки в переусложнении и абстрактные мысли о парадигме докера не приведут к пониманию ошибки в конкретном кейсе

Max
06.10.2016
11:44:35
Свою ошибку в том, что я складывал docker файлы не в репы проектов, к которым они относятся, я понял. Спасибо.

но почему делать вот так плохо https://www.airpair.com/docker/posts/efficiant-development-workfow-using-git-submodules-and-docker-compose ?)))

Evgeny
06.10.2016
11:46:13
Ну, во первых, девелопмент воркфлоу направлен на уменьшение гемороя разраба, к продакшну он напрямую никакого отношения не имеет.

Max
06.10.2016
11:46:32
и Amine Mouafik (CTO at Continuous Software Co. Ltd, автор статьи) вроде так делает?

MAdMAx
06.10.2016
11:47:44
но почему делать вот так плохо https://www.airpair.com/docker/posts/efficiant-development-workfow-using-git-submodules-and-docker-compose ?)))
а вопрос почему - связан именно с идеологией докера. "Неизменяемым (англ. immutable) называется объект, состояние которого не может быть изменено после создания. Результатом любой модификации такого объекта всегда будет новый объект". Тот кейс, который у тебя показан, нарушает это условие. т.к. приложения каждый раз будут разными

Evgeny
06.10.2016
11:47:47
Ну как минимум они теряют возможность разрабатывать поделчючаемые модули для ноды

ptchol
06.10.2016
11:48:10
Нада запрегать компанию "best cto" и стать там cto

Evgeny
06.10.2016
11:48:27
что неминуемо приводит меня к мысли что чувак не сталкивался с реальностью, или что они реально этим не пользуются, или что они любят боль и страдание

ptchol
06.10.2016
11:48:43
И потом любой херней людям мозг выносить )

Evgeny
06.10.2016
11:49:36
Max
06.10.2016
11:53:04
сорри, но мне кажется я ещё больше запутался, чем перед тем как заходил в комнату? Если не сложно может тогда кто-то накидать, как должно быть докеризировано приложение и как оно должно подыматься на сервере, если у меня есть 3 репо: 1. restfull-api (nodejs) 2. cabinet (frontend, js) 3. player (js)

Google
Evgeny
06.10.2016
11:53:43
апи - микросервисы или один апп?

Semyon
06.10.2016
11:53:52
Котаны, а расскажите за безумное. Смотрите, у меня есть пайплайн по сборке контейнеров с софтом. Где сама сборка софта тоже в контейнере. Во время сборки, условный maven качает тысячи говна. Можно _на этапе сборки_ примонтировать некую папку в контейнер?

Max
06.10.2016
11:53:57
один апп

Semyon
06.10.2016
11:53:59
чтобы оно сразу скачивало всё в маунт

Semyon
06.10.2016
11:54:41
У меня сейчас base-image всё "закэшировано"

Admin
ERROR: S client not available

Semyon
06.10.2016
11:54:48
но очень утомляет их руками пересобирать

Evgeny
06.10.2016
11:54:55
кого? зачем руками?

Max
06.10.2016
11:55:01
ну, допустим, они разрабатываются отдельными командами

и лежат в отдельных репо

Semyon
06.10.2016
11:55:28
кого? зачем руками?
базовые образы, не автоматизировано потому што

MAdMAx
06.10.2016
11:55:46
но очень утомляет их руками пересобирать
ну да дергать CI раз в период )

Evgeny
06.10.2016
11:55:55
и лежат в отдельных репо
я хочу понять как оно пото взаимодействует

Semyon
06.10.2016
11:56:03
Дак вот же, я добрался до момент, когда надо автоматизировать и подумал, может можно проще

чем CI с периодами

Evgeny
06.10.2016
11:56:20
базовые образы, не автоматизировано потому што
у меня эти кеш-слои с модулями автоматов сбрасываются когда меняется сосоав модулей

я не знаю как делается в мавене, но скорее всего они прописаны в файле, да?

Google
Max
06.10.2016
11:59:47
никак не взаимодействуют. Допустим если пользователь зайдет по url /cabinet , то попадет в кабинет, а если в /player, то в player)))

Evgeny
06.10.2016
12:00:01
А кто занимается проксированием этого?

ptchol
06.10.2016
12:00:09
Вся проблема с этим понимаем "где хранить докер файлы" от того, что докер дал compose но не объяснил что есть концепция service и application(набор service) или наоборот если хотите.

точнее объяснил, но не так яро как все остальное )

Evgeny
06.10.2016
12:01:11
вот жеж http://collabnix.com/archives/1934

Max
06.10.2016
12:01:56
@NordLuf nginx

Evgeny
06.10.2016
12:03:22
ну тогда у тебя по контейнеру на кабинет и плеер которые стучатся к апи. 3 контейнера

N
06.10.2016
12:04:34
если они лежат в отдельных репо = разные контейнеры из разных образов

Evgeny
06.10.2016
12:05:02
а если в одном - то организоввывать надо не докер

Max
06.10.2016
12:07:38
@NordLuf пока понятно. Потом я создам новое репо с docker-compose. docker-compose.yml будет тянуть image-ы из сырцов репо. Верно?

Evgeny
06.10.2016
12:07:53
в идеале бы да

в смысле - в идеале он из будет тянуть из регистри

Max
06.10.2016
12:09:28
ок, дальше я все это сделал. запустил на серваке docker-compose up. Все работает. Если кто-то сделает коммит в какое-то репо. Как мне потом на сервак задеплоить?

Evgeny
06.10.2016
12:09:56
пересобрать образ через CI (в идеале), прогнать тесты, задеплоить блюгрином

MAdMAx
06.10.2016
12:10:10
ок, дальше я все это сделал. запустил на серваке docker-compose up. Все работает. Если кто-то сделает коммит в какое-то репо. Как мне потом на сервак задеплоить?
сбощик качает последнюю репу, запускает докер билд и получает новый образ с новым приложением. Далее его пушит в регистри

и дергает задачу деплоя )

Max
06.10.2016
12:11:58
сорри за нубский вопрос, но что за блюгрин?

Evgeny
06.10.2016
12:12:56
http://martinfowler.com/bliki/BlueGreenDeployment.html

Max
06.10.2016
12:19:11
но разработчика это же сложнее? Например, каким образом разработчик может делать изменения в ide и смореть результат, который отработал в докере без пересобрания образа?

Evgeny
06.10.2016
12:19:42
это уже процесс разработки - и тут схема маунтить папки с хоста вполне себе роляет

Страница 180 из 610