Monch
так ты же его с телефона запускал
но мне не нужно запускать скрипт с телефона. мне нужно запустить его непосредственно из докера а конкретнее из контейнера appdaemon
Monch
appdaemon сам его будет запускать, так как он демон
Gleb
потом снаружи подключакшься к иксам внутри и выводишь что хочешь
Evgeniy
Оффтоп. Проще поднять брокер на который отправляются события инициаторами и на них подписываются сервисы оповещения. Таким образом сервис с виндовой машины пусть переодически проверяет событие на брокер из контейнера
Aleksandr
Подскажите советом. Развернул Teamcity в контейнере. Контейнер для сервера и контейнер для агента, собранное приложение хочу перенести в другой контейнер соотв-но. Как это сделать? Можно как то вызывать DockerFile, который лежит на хосте из контейнера или по SSH из контейнера на хост ходить? Легально ли вообще такое?
Evgeniy
и не вытолкнуть его в registry
Evgeniy
и уже потом деплоить этот image
Evgeniy
агент собирает image который можно запускать на проде или любых окружения проекта далее этот образ уходит в registry когда идет деплой ты знаешь версию для деплоя и окружения куда деплоить берешь образы из registry нужной версии и раскатываешь по окружению
Evgeniy
почему ты решил что надо деплоить в контейнер?)
Evgeniy
если у тебя образ содержит все необходимое
Evgeniy
ты просто запустишь новый контейнер а старый выключишь
Evgeniy
а как выложить образ в registry для этого надо указать корректный адрес
Aleksandr
ты просто запустишь новый контейнер а старый выключишь
А как правильно из контейнера с агентом обратится к ОС чтобы остановить старый и запустить новый контейнер?
Evgeniy
А как правильно из контейнера с агентом обратится к ОС чтобы остановить старый и запустить новый контейнер?
у тебя контейнеры где крутятся тимсити и там где будет прод(цель деплоя) это одна и таже машина (кластер)?
Aleksandr
Машина одна VPS, я лишь хочу, чтобы Teamcity агент и сервер были в отдельных контейнерах, как и само приложение
Aleksandr
но я не понимаю как при деплое артефакт доставить
Aleksandr
чтобы он вдругом контейнере оказался
Evgeniy
он не должен оказаться в другом контейнере
Evgeniy
твое приложение это набор контейнеров которые создаются из образа
Aleksandr
он не должен оказаться в другом контейнере
т.е. тот факт что у меня агент будет на той же машине что и приложение это нормально?
Evgeniy
это не нормально, но если нет других машин у тебя есть выбор?
Aleksandr
это не нормально, но если нет других машин у тебя есть выбор?
Я некорректно выразился. в одном контейнере нормально держать и агент и приложение?
Evgeniy
нет
Evgeniy
задача тимсити это собрать твое приложение в определеный формат например образ докера и выложить его в хранилище это задача ci
Evgeniy
cd уже берет результат сборки ci и разворачивает на окружение
Evgeniy
грубо говоря кто то сделал пулл реквест или обновил его стартует ci который собирает образы и сохраняет успешный результат в хранилище (registry)
Evgeniy
потом надо возможно его развернуть на тестовом окружение происходит cd деплой того что собрал ci, на тестовое окружение
Evgeniy
и когда таску принимают и вливают, берут тот же результат и деплоя его на прод
Aleksandr
задача тимсити это собрать твое приложение в определеный формат например образ докера и выложить его в хранилище это задача ci
Я сделал отдельную билд конфигурацию для пака, которая собирает артефакт и сохраняет его и пытался сделать отдельную билд конфигурацию для деплоя, которая выбранный артефакт скопирует в папку, а затем запустит DockerFile который развернет новый контейнер скопировав туда эту папку (что я задеплоил)
Aleksandr
но видимо я что то не то делаю
Evgeniy
зачем твой артефакт лежит вне образа?
Aleksandr
Чтобы хранить несколько сборок (иметь возможность в любой момент задеплоить более ранню)
Evgeniy
почему сразу там где ты собираешь артефакт не собирать его внутри контейнера сборщика и по окончанию создавать image и пушить его в registry
George
Что здесь опять
Max xbim 🌴
агент может запустить docker compose или docker run
Aleksandr
агент может запустить docker compose или docker run
но агент сам находится в контейнере
George
Ему значит нужен доступ к докер демону
George
Проброс сокета. Это вот все
Max xbim 🌴
и? контейнер может обратиться к докер сервису по имени машины или пробросить docker socket
Evgeniy
он может подключится туда то что ты считаешь продом (впс или кластер)
Max xbim 🌴
нет
Max xbim 🌴
прост контейнер говорит демону запусти новый контейнер
Aleksandr
Evgeniy
можно просто из агента обращаться от сокета до ssh до кучи других вариантов)
Aleksandr
можно просто из агента обращаться от сокета до ssh до кучи других вариантов)
Я слышал только о сокете и об ssh, но не знал что из этого правильнее
Evgeniy
это получается контейнер внутри контейнера?
можно по ssh можно пробросить сокет
Evgeniy
если когда нибудь у тебя сборка будет отдельно
Evgeniy
от окружения где крутятся контейнеры прода
Evgeniy
то пробрасывать сокет туда не очень
Aleksandr
то пробрасывать сокет туда не очень
согласен, а как тогда с ключами быть? При подключении через SSH?
Evgeniy
агент может от ssh, socket, kubectl, ... юзать
Aleksandr
наверное неправильно по логину и паролю входить
Evgeniy
пропиши его на вдс
Evgeniy
положит в тимсити в переменные окружения
Evgeniy
загугли как там это делать в тимсити
Evgeniy
Aleksandr
Спасибо за помощь, пошел разбираться
Slach
народ, я ведь правильно понимаю что RUN docker pull внутри Dockerfile невозможно сделать от слова вообще? объясню какую проблему пытаюсь решать у меня есть набор e2e тестов которые тестируют поведение Kubernetes operator внутри kubernetes cluster кластер запускается с помощью minikube —driver=docker docker сам запущен внутри docker контейнера потому что это CI/CD и вот это все говнищще в рантайм тянет кучу образов разных версий (мне надо тестировать поведение оператора при смене версии Image оператора и Image) которые я закачиваю внутрь контейнера в runtime при этом в CI/CD я естественно могу сделать custom image ;) но вот в этом custom image сделать docker pull уже не получится =( так?
George
> но вот в этом custom image сделать docker pull уже не получится =( положить образы архивами, а потом уже в рантайме docker load ?
Slach
> но вот в этом custom image сделать docker pull уже не получится =( положить образы архивами, а потом уже в рантайме docker load ?
архивы образов надо откуда то взять сначала... как? а docker save?! блин я забыл про него ну то есть конечно как вариант можно попробовать собрать .tar до сборки docker build но куда их распаковывать но хотелось все инструкции по сборке в самом Dockerfile кастомного Image оставить =( ну короче, пока там похоже на то, что есть опция в circle ci machine: enabled: true docker_layer_caching: true и вроде бы на сервере оно должно проканать а локально для тестирования circleci local execute я просто сделаю circleci local execute -v /circleci/var/lib/docker:/var/lib/docker и таким образом добьюсь схожего эффекта
Slach
По моим стопам идешь 😉
;) не, я свернул понял что дальше дело гиблое...
Slach
но блин, 4.5 гигабайта зависимостей выкачивается... очень надеюсь что docker_layer_caching будет работать
Anonymous
привет всем, кто может подсказать - есть nginx в докер контейнере, nginx.conf проброшен с хоста в контейнер. Заменяю nginx.conf, пытаюсь сделать релоад (рестрат нельзя делать), но вываливается ошибка nginx: [emerg] open() "/etc/nginx/nginx.conf" failed (5: Input/output error)
Anonymous
в конфиге ошибок нет 100%
Gleb
сделай изнутри контейнера cat на конфиг
Anonymous
cat: /etc/nginx/nginx.conf: Input/output error