Monch
Alexey
Monch
так ты же его с телефона запускал
но мне не нужно запускать скрипт с телефона. мне нужно запустить его непосредственно из докера а конкретнее из контейнера appdaemon
Monch
appdaemon сам его будет запускать, так как он демон
Gleb
Gleb
потом снаружи подключакшься к иксам внутри и выводишь что хочешь
Evgeniy
Оффтоп. Проще поднять брокер на который отправляются события инициаторами и на них подписываются сервисы оповещения. Таким образом сервис с виндовой машины пусть переодически проверяет событие на брокер из контейнера
Aleksandr
Подскажите советом. Развернул Teamcity в контейнере. Контейнер для сервера и контейнер для агента, собранное приложение хочу перенести в другой контейнер соотв-но. Как это сделать? Можно как то вызывать DockerFile, который лежит на хосте из контейнера или по SSH из контейнера на хост ходить? Легально ли вообще такое?
Evgeniy
Evgeniy
и не вытолкнуть его в registry
Evgeniy
и уже потом деплоить этот image
Evgeniy
агент собирает image
который можно запускать на проде или любых окружения проекта
далее этот образ уходит в registry
когда идет деплой ты знаешь версию для деплоя и окружения куда деплоить
берешь образы из registry нужной версии и раскатываешь по окружению
Aleksandr
Evgeniy
почему ты решил что надо деплоить в контейнер?)
Evgeniy
если у тебя образ содержит все необходимое
Evgeniy
ты просто запустишь новый контейнер а старый выключишь
Evgeniy
а как выложить образ в registry для этого надо указать корректный адрес
Aleksandr
Машина одна VPS, я лишь хочу, чтобы Teamcity агент и сервер были в отдельных контейнерах, как и само приложение
Aleksandr
но я не понимаю как при деплое артефакт доставить
Aleksandr
чтобы он вдругом контейнере оказался
Evgeniy
он не должен оказаться в другом контейнере
Evgeniy
твое приложение это набор контейнеров
которые создаются из образа
Evgeniy
это не нормально, но если нет других машин у тебя есть выбор?
Evgeniy
нет
Evgeniy
задача тимсити это собрать твое приложение в определеный формат например образ докера
и выложить его в хранилище
это задача ci
Evgeniy
cd уже берет результат сборки ci
и разворачивает на окружение
Evgeniy
грубо говоря
кто то сделал пулл реквест или обновил его
стартует ci который собирает образы и сохраняет успешный результат в хранилище (registry)
Evgeniy
потом надо возможно его развернуть на тестовом окружение происходит cd деплой того что собрал ci, на тестовое окружение
Evgeniy
и когда таску принимают и вливают,
берут тот же результат и деплоя его на прод
Aleksandr
но видимо я что то не то делаю
Evgeniy
зачем твой артефакт лежит вне образа?
Aleksandr
Чтобы хранить несколько сборок (иметь возможность в любой момент задеплоить более ранню)
Evgeniy
почему сразу там где ты собираешь артефакт
не собирать его внутри контейнера сборщика
и по окончанию создавать image и пушить его в registry
Evgeniy
George
Что здесь опять
Aleksandr
Evgeniy
Max xbim 🌴
агент может запустить docker compose или docker run
Aleksandr
George
George
Ему значит нужен доступ к докер демону
George
Проброс сокета. Это вот все
Max xbim 🌴
и? контейнер может обратиться к докер сервису по имени машины или пробросить docker socket
Evgeniy
он может подключится туда то что ты считаешь продом (впс или кластер)
Aleksandr
Aleksandr
Max xbim 🌴
нет
Max xbim 🌴
прост контейнер говорит демону запусти новый контейнер
Aleksandr
Evgeniy
можно просто из агента обращаться от сокета до ssh до кучи других вариантов)
Aleksandr
Evgeniy
Evgeniy
если когда нибудь у тебя сборка будет отдельно
Evgeniy
от окружения где крутятся контейнеры прода
Evgeniy
то пробрасывать сокет туда не очень
Evgeniy
агент может от ssh, socket, kubectl, ... юзать
Aleksandr
наверное неправильно по логину и паролю входить
Evgeniy
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
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
и таким образом добьюсь схожего эффекта
NM
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