Artyom
Artyom
есть ли там настройки прокси
Artyom
или внутри контейнера переменную HTTP_PROXY проверь
manlyx
нету такого
Иван
Всем привет. Говорят что на маках named volume работает гораздо быстрее чем обычный volume прокинутый с хоста. Начал пытаться перенести node_modules в named volume. Выглядит это примерно так -
volumes:
- node_modules:$APP_PATH/node_modules
$APP_PATH это тоже volume но он пробрасывается с хоста.
Внутри контейнера у меня не рутовый пользователь и если посмотреть кому принадлежит node_modules то там будет мой нерутовый юзер, а вот на хосте папка node_modules создается от имени рута. На хосте она будет всегда пустой и смысла в ней нет. Есть ли возможность как то сделать что бы она не создавалась или же что бы создавалась от имени пользователя хоста/контейнера?
George
George
Разве что монтировать вольюм и bind mount с хоста и самому какой-то скрипт синхронизации писать
George
И тут выясняется, что ты изобрёл docker-sync
Иван
Даже если сделать chown внутри контейнера, на хосте все равно она рутовой остается
Иван
И кстати тут можно задавать вопросы которые все таки больше связаны с башем и линуксом чем с докером? Пытаюсь сделать что бы юзер внутри контейнера подхватывал юзер ид и груп ид от смонтированной папки с хоста, но иногда натыкаюсь на немного странное поведение.
Dan
Иван
Любопытно для чего такое нужно
Ну например если в проекте есть какой то генератор, например миграций, моделек, да впрочем любых файлов, которые ты потом можешь захотеть редактировать, а в контейнере юзер отличается от юзера хоста, то придется каждый раз на хосте chownить сгенеренные файлики
George
Иван
Добрый вечер!
Никто, случайно, не менял пользователя образа в entrypoint скрипте? Не просто запустить процесс через gosu, а прям сменить пользователя, чтобы при входе в контейнер потом заходил под этим non-root пользователем?
Сори за некропостинг, просто я как раз что то подобное и делаю, решил поискать по чату никто ли не сталкивался с изменением env переменных при использовании gosu. У меня вроде как получается нормально сменить пользователя, по крайней мери и при exec и при run пользователь у меня с uid и gid юзера с хоста, но почему то меняется $PATH и $@ переменные после использования exec sudo -E gosu. $@ обрезается до 1 элмента, то есть если я например делаю docker-compose run --rm web bundle exec rails console, то в энтрипоинте после всех этих gosu в $@ лежит только bundle а все остальное куда то пропадает и из PATH пропадает 1 путь. На данный момент в начале файла до применения gosu я просто сохраняю $path и $@ в других переменных и в дальнейшем использую уже их, но как то это странно. Если кто то знает с чем это может быть связано, подскажите пожалуйста.
George
George
Без текста docker-entrypoint.Sh можно долго гадать
Иван
Anton
Сори за некропостинг, просто я как раз что то подобное и делаю, решил поискать по чату никто ли не сталкивался с изменением env переменных при использовании gosu. У меня вроде как получается нормально сменить пользователя, по крайней мери и при exec и при run пользователь у меня с uid и gid юзера с хоста, но почему то меняется $PATH и $@ переменные после использования exec sudo -E gosu. $@ обрезается до 1 элмента, то есть если я например делаю docker-compose run --rm web bundle exec rails console, то в энтрипоинте после всех этих gosu в $@ лежит только bundle а все остальное куда то пропадает и из PATH пропадает 1 путь. На данный момент в начале файла до применения gosu я просто сохраняю $path и $@ в других переменных и в дальнейшем использую уже их, но как то это странно. Если кто то знает с чем это может быть связано, подскажите пожалуйста.
В конечном итоге я установил sudo в свой debian образ. В конце DockerFIle меняю своего пользователя, а в ентрипоинте потом все, что нужно выполняю через sudo. Обртаного (как в цитируемом сообщении) у меня не получилось добиться.
George
Логично
George
А в энтрипойнт у тебя Sh -c или []?
Иван
[]
George
В этом и проблема
Иван
ENTRYPOINT [ "./docker-entrypoint.sh" ]
George
У тебя каждый аргумент идёт отдельным элементом
George
George
Там какая-то магия с массивами
George
Типа {$@} и shift
George
Точно не помню, но сделать можно
Иван
Ок, спасиб, чуть позже погуглю то за shift. я просто в баше мало что понимаю :)
Иван
а path из за этого тоже может меняться?
George
Хз
Иван
просто у меня докерфайл на основе рубишного образа, а там в конце есть такое - ENV PATH $GEM_HOME/bin:$PATH
после всех этих gosu из него как раз этот путь и пропадает
George
George
Ты там ещё Sudo вызываешь
George
Извращение какое-то
Иван
ага
George
Обчитались бестпректисов и не умеют их использовать ……
Иван
ну там реально надо изврааться чтоб прокинуть uid и gid на основе вольюма
Иван
если сразу динамически создаешь юзера в энтрипоинте, то это работает только при docker run, а при docker exec все выполняется от рута. Приходится внутри докерфайла создавать юзера с рандомными uid gid, переключаться на этого юзера через USER, и внутри entrypoint менять этому юзеру gid и uid
Иван
но напрямую сразу поменять нельзя, и приходмтся создавать еще одного временного юзера, что бы переключится как бы на него и от его имени сменить uid и gid
Иван
других способов я не нашел
George
Какой-то изврат
George
Зачем ты вообще docker exec делаешь?
George
Задача какая решается ?
Иван
George
Так вообще не надо так делать
George
Если это разработка - ты можешь под пользователем тупо работать
George
Если прод - никаких общих папок с хостом. Вольюмы и файлы, запечённые в образ
Иван
разработка, но пользователя ведь надо руками прокидывать
Иван
я просто захотел это автоматизировать
George
маки всем купи
George
там нет такой проблемы
Alexander
кстати, да…
нет смысла создавать своего образа внутри докерфайла?
ну тупо чтобы UID был не рутовый внутри контейнера
Alexander
я просто с лохматых годов уже создаю app юзера в докер образах )
а стоит ли оно того сейчас - даже хз )
Andrey
Можно ли по умолчанию задать имена контейнерам в docker-compose? Надоело, что после дауна и апа меняются идентификаторы и их заново нужно прописывать в командах
Artyom
Andrey
Алексей
Всем привет. Познакомился в целом с докер, вроде бы да, рамочно всё понятно, установил докер, скачал контейнер запустил пользуйся. не совсем понятен конечный профит по сравнению с бареметалл вариантами, ну вот есть хорошая железка, ок, есть линукс на железке, ок, ну нет докера и нет, всё что надо установил на эту железку и без докера, в том плане если это просто приложеньки в контейнере, в любом же случае производительность железа не резиновая, что я упустил?
George
упустил то, что докер позволяет очень быстро деплоиться
George
на бареметал у тебя всегда есть окружение и версия операционной системы и библиотек. Докер это инкапсулирует и по сути твое приложение становится переносимым
George
да, за это придется немного заплатить оверхедом - по сети и по диску
George
докер ставится за время скачивания образа + настройки = стандартизированный подход в виде переменных окружений
George
в случае стандартного postfix/exim/dovecot с конфигами на 1000 строк ты запаришься это настраивать
Алексей
George
а еще от дистрибутива к дистрибутиву будут разные нюансы
George
Алексей
Алексей
сорян за слишком простые вопросы
George
в том числе
George
или тебе нужно несколько реплик сервиса запустить
Алексей
конфигурять всё равно придется
George
как сделать штатно? В докере просто - тупо берешь и запускаешь Н реплик
Алексей
и это всё равно время
George
тот же постгрес
Алексей