PankovAlxndr
@PankovAlxndr
Fullstack web developer

Как исправить ошибку прав (permission denied) при работе с docker + mutagen?

Здравствуйте

на ноутбуке (macos) лежит код проекта (чистый laravel)
рядом с кодом проекта лежат
- docker-compose.yml
- mutagen.yml

Работа строится так
1) Мутаген настроен на сихронизацию папки с проектом и vps
на самом впс установлен docker (compose)
2) Перехожу в папку с проектом и запускаю mutagen, файлы тут же появляются на vps и у этих файлов пользователь тот, которым я подключаюсь на vps (id 1000)
вот пример первая строка этой мой пользователь, вторая рандомный файл проекта
uid=1000(pankov) gid=1000(pankov) groups=1000(pankov),27(sudo),998(docker)
-rw-rw-r--  1 pankov pankov    569 Feb 20 11:38 server.php

3) итак, имею vps и файлы проекта, запускаю на vps docker-compose build... внутри которого файлы маунтятся (прокидываются) в нужные контейнеры (с nginx, php), докер стартует
4) вот тут первая проблема, так как контейнеры не знаю про меня (моего пользователя), при переходе по url проекта я вижу ошибку
The stream or file "/application/storage/logs/laravel.log" could not be opened in append mode: Failed to open stream: Permission denied

5) при этом если я правлю в ide свои файлы то они моментально оказываются на vps и контейнер видит эти изменения и пытается запустить уже новый код, тут все как надо
6) нагуглил, что нужно файлам поставить пользователя www-data, окей, ставлю на vps(хост машине), соответственно внутри докера так же эти файлы с владельцем и группой www-data
7) пробую постучаться на порт nginx (открыть сайт) - ошибка пропала - сайт работает
8) но тут новая проблема, отвалился mutagen при синхронизации файла ошибку выдает, что ему не хватает прав, вроде логично да, например, я правлю index.php у себя, mutagen старается его изменить на vps, а на vps уже владелец этого файла не я (pankov), а www-data

Заблудился в 3ех соснах, подскажите почему так и как исправить?

Таким образом, я копирую на vps (через mutagen) файлы проекта, владелец файлов становится пользователь, через которого осуществляется ssh соединение (pankov), докер (его контейнеры) ничего не знают о владельце и сыпется ошибка прав, ставлю владельца файлов проекта на www-data (откуда вообще у меня этот www-data?), код выполняется и логи пишутся, но теперь ошибка прав сыпется от mutagen

те мне нужно:
или файлы копировать через mutagen с нужным владельцем и группой сразу?
тогда как мне потом и чреез ssh\ftp ковырять

или при монтировании файлов в контейнер назначать им нужного владельца и группу?
или внутри контейнеров создавать копию моего пользователя и делать так чтобы nginx и php были в одной группе с моим пользователем?

Какой вариант правильный и есть ли он вообще? (я понимаю, что в плаванию в теории о том как работают права в linux, даже без доекра)

вообще ноут слабенький и занимаюсь remote development, чтобы база и php шелестели где-то не у меня, а я (ноут) , был тонкий клиент по обновлению кодовой базы
  • Вопрос задан
  • 705 просмотров
Решения вопроса 1
PankovAlxndr
@PankovAlxndr Автор вопроса
Fullstack web developer
рецепт

sudo find . -type f -exec chmod 644 {} \;
sudo find . -type d -exec chmod 755 {} \;

ошибка
The stream or file "/application/storage/logs/laravel.log" could not be opened in append mode: Failed to open stream: Permission denied

chmod -R 775 storage
chmod -R 775 bootstrap/cache

все работает как надо
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы