меня убунта в wsl, юзер dev
но контейнеры (docker-compose) поднимаются от рута.
И когда в php контейнере работает композер или линтер, Они сбрасывают овнера и права на запись файликам, так Что в \\wsl$\Ubuntu-20.04 .... становятся недоступными
руками меняю потом.
какправильно сделать?
1) возможно докер подымать от dev?
2) убунту запускать сразу с рутом както? чтоб \\wsl$\Ub.. через рут заходил?
3) еще варианты?
добавить юзера в контейнер
https://faun.pub/set-current-host-user-for-docker-container-4e521cef9ffc
поподробнее плиз в docker-compose.yml ? как и какого юзера? dev и что тгда? контейнер будет
в docker-compose.yml вставил например elastic: user: 1000:1000 в контейнере стало показывать $ id uid=1000(dev) gid=1000(dev) groups=1000(dev), а не uid=0(root) gid=0(root) groups=0(root) вроде бы то что надо но создает он папку /docker/elastic/data всеравно как root а потом сам же эластик не может в нее писать.. php контейнер аналогично, компосер vendor заполняет папками от root что я делаю не так?
не забыл прокинуть volumes: - /etc/group:/etc/group:ro - /etc/passwd:/etc/passwd:ro - /etc/shadow:/etc/shadow:ro ?
мопед не мой ( проект чужой разворачиваю, и хочу до ума довести настройки) сейчас там volumes: # чтобы после перезагрузки не терять данные - ./docker/elastic/data:/usr/share/elasticsearch/data во, ./docker/elastic/ data/ создается при UP но у нее владелец рут
по 3 методу не должно так быть .. что-то не доделал
там не надо явно указывать .. не гибко получается .. лучше передавать извне нужного юзера
а где и как это прописать? тут есть docker-compose.yml папка docker с папками настроек для разных сервисов, и в каждом свой Докерфайл по доке твоей, шаг 3 с docker build -- я не секу уже такое
не шаг а метод (Method 3: Docker-compose) ) смотри внимательно .. там именно докер композе .. я именно такой и использую
ну да, метод 3 шаг 1: вписываю user: 1000:1000 сразу тк на хосте id 1000(dev) мой Step2 запускаю up всесразу шаг 3. внутри вижу $ id uid=1000(elasticsearch) gid=1000(elasticsearch) groups=1000(elasticsearch) 1000 мой
и почему внутри контейнера не твой юзер dev, а внутренний elasticsearch .. не надо задавать uid явно .. ты получаешь совершенно другого юзера
тогда подскажи где вписать export UID=$(id -u) export GID=$(id -g) ?
и кстати зачем тебе юзер в контейнере эластика ? если юзер нужен в контейнере пыхи для композера и т.п..
ну у эластика похожая проблема, проще ее тестить) при первом старте создает папку data а у нее права рута аналогично пыха создает файлики композером, кеши в ларе и тд рутовые и сама падает
насколько я вижу не со всеми сборками это можно сделать .. например образ постгреса ругается, что я переназначаю ему права при создании БД.. так как сервис от рута запускается и БД строго от него
не ругается никто. просто папка создается рутовая а потом эластик на нее ругается что не может в ней node сделать и тд вот написл ./docker/elastic/data2:/usr/share/elasticsearch/data создалась data2/
ну тебе виднее .. у меня твоей сборки нет .. я вижу только то ч то у меня есть
ну понятное дело, что без юзера оно создает рутовое .. так как в контенере никого другого нет
хм, в еластик контейнере как раз есть юзер 1000(elastic) если захожу в контейнер, то в нем id показывает 1000 как бы работает передача внутрь
еще прикол, если юзера просовываю в php умирает композер. начинает требовать токен ругается о недоступности It will be stored in "/home/dev/.composer/auth.json" думает что он хост [Composer\Downloader\TransportException] curl error 6 while downloading https://api.github.com/: Could not resolve host: api.github.com
Обсуждают сегодня