Anonymous
А с ; вторая команда выполняется при любом условии
Dmitry
Экзамен на баш?)
Anonymous
entrypoint bash прописывать обязательно?
Anonymous
entrypoint bash прописывать обязательно?
Dmitry
Почему нечто? Я предложил то, что на мой взгляд является правильнее; если вы со мной не согласны, пожалуйста аргументируйте
Anonymous
Уверен в случае если ENTRYPOINT bash
Насколько я понял, это необязательно
Dmitry
Насколько я понял, это необязательно
Зависит от того какой ENTRYPOINT задан в образе
Dmitry
/bin/bash
Ну тогда все ок
Yury
а почему бы приложение не изменить на работу из ENV напрямую? Тогда скрипт не нужен.
Alexander
лучше использовать secret-файлы)
Alexander
чтобы в процессах всё это не висело
Alexander
образ с postgres, например, так умеет
Anonymous
А нельзя в command(docker-compose) указать несколько команд?
Anonymous
Bash -c в command указывать обязательно?
Anonymous
Или command[]
Anonymous
?
Anonymous
можно еще entrypoint скрипт сделать
Юрий
Всем привет! Подскажите пожалуйста решение для следующей проблемы. Имеется клакстер OpenShift и отдельно стоящая машинка с docker. Везде CentOS 7.4 и docker 1.12.6. На всех установках наблюдается следующее: в логи попадают как-будто не все записи, как-будто какая-то буферизация работает. Т.е. последние n строк (или даже часть записи) могут отсутствовать в выводе. При этом если запускается java-приложение и log4j настроен одновременно на вывод в консоль и запись в файл - в файле присутсвуют все записи
Vlad
Купить поддержку от RedHat или использовать docker-ce
inqfen
Я с такой хрень встречался когда быстрый прирост и действительно проблема была в буфере
Юрий
Медленно. Например приложение стартует и тупо висит, ожидая событий. При этом часть лога старта не отображается
Юрий
Нашёл вот пару тикетов, похожих на возможный вариант https://github.com/moby/moby/issues/17398 https://github.com/moby/moby/issues/16725
inqfen
Попробуй действительно на docker-ce один хост обновить
inqfen
1.12 достаточно багованная вещь
Юрий
К сожалению этот вариант для целевого решения не прокатит :(
Anonymous
А что логи говорят на мастере? На менеджере посмотреть название сервиса docker service ls И если не ошибаюсь docker service logs А если логов нет то вроде можно посмотреть состояние сервиса в кластере docker service ps Там ошибки отскакивают если что-то не так
Всем привет! Есть задача - запускаю в swarm сервис и хочется, чтобы у каждого контейнера внутренняя папка /var/log/somename монтировалась к хостовой /bla-bla/<docker Id/hostname>. Это вообще реально?
Denis
Всем привет! Есть задача - запускаю в swarm сервис и хочется, чтобы у каждого контейнера внутренняя папка /var/log/somename монтировалась к хостовой /bla-bla/<docker Id/hostname>. Это вообще реально?
volume использовать к примеру и указать папку хоста для монтирования Типо того - /var/www/data:/var/www/data Где до двоеточия путь к папке на хосте, после путь в контейнере
Anonymous
Мне нужно чтобы каждый экземпляр сервиса цеплялся в свою уникальную папку
Тигран
Мне нужно чтобы каждый экземпляр сервиса цеплялся в свою уникальную папку
ты же знаешь названия сервисов) пропиши их название в волайме
Anonymous
Блин,похоже я плохо объясняю. "Уникальный"- это значит для каждого экземпляра свой. И это не каждый докер руками, где можно прописать при запуске параметр каждого контейнера- это swarm.
Anonymous
Да. В том то и беда.
Denis
Как я понял, такой вопрос можно решить наследованием в docker-compose файле. К примеру создать базовый сервис и от него наследовать с нужными настройками https://docs.docker.com/compose/extends/#extending-services Я сам не пробовал но должно помочь
Тигран
Да. В том то и беда.
судя по https://github.com/docker/compose/issues/449, это было реализовано
Тигран
попробуй передавать переменную окружения
Тигран
что то типа
Тигран
volumes: - ${WORKSPACES_HOME}/logs:/webapp/myapp/logs/
Denis
compose можно исапользовать в swarm-е только с включеными фичами. - Это как-то может повлиять на работы, так-как это продакшн?
Ну я только его и использовал, по мне так это удобно, композ файл всего лишь описывает состояние сервисов в кластере
Denis
Кстати я думал о переменных средах, наверное должно помочь тоже)
Anonymous
volumes: - ${WORKSPACES_HOME}/logs:/webapp/myapp/logs/
если я передам некую определенную переменную, то все реплики будут монтироваться в одно место. Мне бы привязаться к id или имени новой реплики - тут будет уникально. Вообще тупо стоит задача хранить логи сервиса, запущенного в контейнерах для последующего разбора ошибок. Может я костылю и есть что-то готовое?
Pavel
Господа, всем дня доброго АЛАРМ!
Pavel
Есть сворм, всего машин 4
Pavel
из них манагеры 3
Pavel
Стартую сервисы - не видят друг друга по ДНС
Pavel
кто-нибудь сталкивался?
Pavel
Раньше всё норм было
Denis
если я передам некую определенную переменную, то все реплики будут монтироваться в одно место. Мне бы привязаться к id или имени новой реплики - тут будет уникально. Вообще тупо стоит задача хранить логи сервиса, запущенного в контейнерах для последующего разбора ошибок. Может я костылю и есть что-то готовое?
А вариант с наследованием не подходит?) Я бы сказал что у такого подхода больше плюсов наверное) К примеру можно создать someService.yml в нем указать базовые настройки сервиса без волумов А в основном композ файле указать при наследовании нужные волумы для нужных реплик, да и в целом можно будет конфигурировать каждую реплику индивидуально, к примеру 1 реплика будет 1ядро и 1Гб памятик есть, а вторая 2 ядра и 2 гига, и также если нужно будет реплики по конкретным хостам раскидывать, тоже вроде удобнее в extends это указать.
Denis
Что-то типа того выходит web: extends: file: common.yml service: web volumes: - .:/code web2: extends: file: common.yml service: web volumes: - .:/code2
Pavel
docker network inspect ... должно выводить все контейнеры?
Denis
docker network inspect ... должно выводить все контейнеры?
Отображает все контейнеры в данной сети
Pavel
тогда печаль
Pavel
Отображает все контейнеры в данной сети
отображает только сервисы на данной ноде
Denis
Если сеть overlay то все кто в ней по идее
Denis
Не только на ноде
Denis
docker service ps может показать ошибки между нодами
Pavel
Да я в логах вижу что один сервис до БД не достукивается
Pavel
ну, не только он один конечно же
Anonymous
entrypoint - это команда, которая выполняется каждый раз при запуске/перезапуске контейнера?
Artem
добавить условие в entrypoint
Artem
чаще всего это скрипт, да
Anonymous
Просто мне нужно при первом запуске контейнера создавать пользователя
Anonymous
RUN adduser
Через Dockerfile я это не пропишу, т.к. образ один, контейнеров много, и у каждого контейнера юзер свой
Artem
определяешь какой нибудь энвайромент который будет триггером для этой команды типо MIGRATE=1 и соответственно когда передашь этот параметр будешь запскать свою команду
Nikita
Через Dockerfile я это не пропишу, т.к. образ один, контейнеров много, и у каждого контейнера юзер свой
Не канонично так делать, докер стейтлесс, а у тебя выходит каждый контейнер со своим стейтом и данными (о пользователе)
Artem
ну в энтрипойнте опиши типо создать юзера если его еще нет
Anonymous
Сейчас у меня просто примонтирован /etc/passwd с хоста во все контейнеры
Anonymous
Насколько это плохо?
Gaiaz
Насколько это плохо?
плохо, лучше разные uid и gid
Anonymous
плохо, лучше разные uid и gid
Тогда пользователь не получит доступ к папке. У меня там ACL права, разрешающие права на запись,чтение и исполнение определённому пользователю, все остальные ничего не смогут сделать.