Arris
@Arris
Сапиенсы учатся, играя.

Как убедить докер создавать каталоги с правильными правами?

Есть у нас такая тулза tyrrrz/discordchatexporter (но я думаю, от тулзы не зависит совсем, потому что проблема возникает на другом уровне)... Занимается тулза экспортом дискорд-канала в HTML/JSON итп.

На самом деле не так важно, чем она занимается, потому что проблема, судя по всему, опять же на стороне докера.

Итак, в чем подвох:

Запускаю тулзу так:
arris@blacktower:~$ docker run --rm --user 1000:1000 -v /home/arris/out/:/app/out/ tyrrrz/discordchatexporter:latest export <параметры>


Если каталог /home/arris/out/ (или любой другой) существует и права на него у пользователя 1000:1000 - то всё зашибись, экспорт работает без ошибок, на файлах правильные права и вообще все довольны.

А вот если целевой каталог НЕ СУЩЕСТВУЕТ - докер (?) его радостно создает, а потом экспорт падает с Permission Denied. Потому что, внезапно,

arris@blacktower:~$ ls -la /home/arris/out/
total 8
drwxr-xr-x 2 root  root  4096 Feb  6 21:46 .
drwxr-xr-x 9 arris arris 4096 Feb  6 21:46 ..


P.S. А если опустить --user 1000:1000 - то все прекрасно создается, экспортируется, но результат экспорта - все файлы принадлежит руту. Что тоже не то, что хочется.

ЧЯДНТ или как убедить докер создавать каталоги с правильными правами?

P.S. Разработчик тулзы тоже не настоящий сварщик и тоже ответа не знает.
P.P.S.
arris@blacktower:~$ id arris

uid=1000(arris) gid=1000(arris) groups=1000(arris), ...
  • Вопрос задан
  • 118 просмотров
Решения вопроса 1
@Akela_wolf
Extreme Programmer
1. Использовать volume
2. Либо убедиться что каталог существует: mkdir -p <directory> && docker ...
3. Либо назначить нужного владельца каталога:
mkdir -p <directory> && chown 1000:1000 <directory> && docker ...

Если это запускается не рутом - в п.3 потребуется использовать sudo.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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