Slava
вручную не задаем. Но при поднятии контейнера указываем —label hostname=${SUBDOMAIN}.xxx.yyy как там внутри разруливается, я хз. Настраивал кто-то другой
Aleksey
Aleksey
делаем именно так для прогонов стейджинг
Slava
да, кстати. Consul - отличный вариант, пользовался им. Единственная проблема, с которой столкнулся - если несколько тачек и несколько консул-агентов, то сервис надо убивать там, где он поднимался
Aleksey
Slava
в консуле, кстати, можно и конфиги хранить. Очень удобно получается в связке с consul-template :) Но это уже другая тема
Slava
у меня такая была проблема - делал REST запрос по их API, чтобы дерегистрировать сервис, так вот выяснилось, что нужно знать, к какому агенту обращаться
denis
Спасибо за информацию, посмотрю на consul
Slava
кажется, вспомнил ту проблему. Там были: docker-swarm + несколько тачек + docker-compose. При обновлении через docker-compose контейнер поднимался на другой тачке, а со старой не дерегистрировался. Сейчас мб пофиксили
denis
docker-swarm в связке с consul получается?
Slava
ну это чтобы на нескольких тачках работало )
Slava
если машина одна - то docker-compose + consul должно подойти
Aleksey
Slava
у них issue было в гитхабе, которое закрывалось и открывалось несколько раз :D там еще чел свою утилиту на go написал. Но если надо будет кому - могу поискать, как мы это у себя делали
Slava
чтобы запустил команду и вжух
Vitalii
чтобы запустил команду и вжух
Я недавно поднимал вопрос "как контейнеры деплоить на прод?" Мне дали вариант только по ssh, хотел бы ещё варианты услышать. Читал про swarm + consul и там какой-то ппц был (сложно). Как вы делаете?
Aleksey
локально как запускаете?
Aleksey
Aleksey
но нужно будет настроить сертификаты
Vitalii
локально как запускаете?
Пока у меня мультконтейнерное приложение живущее на одном хосте и запускаемое через docker-compose.
Aleksey
-H
Aleksey
Options:
-f, --file FILE Specify an alternate compose file (default: docker-compose.yml)
-p, --project-name NAME Specify an alternate project name (default: directory name)
--verbose Show more output
-v, --version Print version and exit
-H, --host HOST Daemon socket to connect to
Aleksey
Aleksey
это хел для докер компоуза
Aleksey
прямо шелом в джобе дженкинса того же
Vitalii
Ок. Тогда подробнее как схема работает и что откуда и куда?:)
У меня gitlab ci. Через раннер не вариант или я не знаю как:)
Но вот допустим есть сервер ci и сервер прода с запущенной службой docker. Можно ли с сервера ci попросит службу docker на хосте прода подтянуть и перезапустить контейнеры нужные?
Vitalii
Через какие-то внутренные при докера...
Aleksey
за гитлаб не скажу, но логика любого ci раннера - у него есть шел на каком либо серевре, коль так, юзеру у которого есть шел можно дать права управлять докером
Aleksey
в дженкинсе это просто шел команды, у гитлаба так понимаю свой подход через yml
Aleksey
Vitalii
Vitalii
во, в статье используется stackahoy для Deployment
Slava
у консула есть хелс-чеки, главное, чтобы приложение их поддерживало. ХЧ можно самому написать на чем угодно. Например, можно написать ХЧ на работу БД - типа коннектимся к БД и пытаемся выполнить SHOW TABLES или что-то в этом духе.
Slava
ну а дальше через консул и консул-теплейт можно удобно сделать blue-green deployment
Slava
типа - поднимаем копию сервисов, пишем в консул наименование цвета, по консул темплейт переключаем прокси
Vitalii
перед тем как этим пользоваться (ансибл, докер сварм, докер машина) надо понять как оно все работает и взаимодействует :)
Vitalii
но я узнал что есть такой путь
Vitalii
спасибо :)
Slava
на первом заходе можно думать как о черной коробке:
1. ansible - настройка машин (так же можно и деплой через него сделать)
2. docker-machine - установка докера и докер-сварма на тачках (можно сделать ансиблом, но docker-machine в разы проще)
3. docker-swarm - объединение нескольких docker server'ов в 1
4. docker-compose - поднятие приложения, состоящего из нескольких сервисов
Slava
а если будут какие-то специфичные требования/проблемы - копать уже в конкретную сторону
Vitalii
вот, такой список я себе сохраню. Коротко и понятно какой инструмент для чего. А подробнее можно почитать в доке.
Vitalii
Мне пока подойдет как замена SSH https://stackahoy.io/ но не уверен буду ли я переходить на него.
Anonymous
Slava
"работает - не трогай" :D
Slava
хорошее правило, кстати
Vitalii
ну вот и я о том же. Возможно этот сервис что-то упростит. Если нет, тогда нет :)
🏳️ Phil
Vitalii
ну, так как пока не работает в продакшене то можно и потыкать палкой :)
Slava
хорошее. Каждый раз, когда я его нарушаю, возникают какие-то невероятные и тяжело гугливаемые проблемы
Slava
тратить время на исходники левого проекта как-то не очень
🏳️ Phil
Vitalii
плохое
надо золотую середину находить и взвешивать риски и профит
Pavel
SSH это базовейший инструмент вообще, странно что ты о нем говоришь как о какой-то "подходящей тулзе для деплоя"
🏳️ Phil
Slava
ну у меня есть другое направление, в котором я копаю. Я не docker-сварщик :D
Slava
а тут уж пришлось разобраться )
Anonymous
в этом смысле "работает - не трогай" это плохое правило, потому что оно превращает каждый деплой в аварийную и исключительную ситуацию
Slava
если с такой стороны посмотреть - то да
Aleksey
работает - не трогает - это адское наследие предыдущего поколения. Сейчас все стремятся к повторяемости - не знаешь как повторить - не трогай :)
Pavel
работает - повтори и не трогай
Aleksey
а сам ssh может быть вреден, точнее не сам ssh, а например sftp - нарывался на ситуации, когда канал забит в полочку - sftp просто перестает работать
Anonymous
Anonymous
Aleksey
это да
Aleksey
никаких ssh на сервер! :))
Anonymous
так что blue/green и вперед
Aleksey
угу - самое верное
Vitalii
во
Vitalii
blue\green это из какой оперы?
Vitalii
хорошо что вы сказали про проблемы деплоя по ssh.
Aleksey
https://habrahabr.ru/post/309832/
Vitalii
шикарно! Спасибо
Pavel
А что там на картинке? 2 разные базы?
Vitalii
у меня только всегда остается открытым вопрос базы данных.
Как можно тестировать приложение на живых данных и при этом не на живой базе? Копировать базу каждый раз может быть сложно из-за ее размера...