andreyvoroncov
@andreyvoroncov
мечтатель

Как записать файл в папку контейнера во время запуска docker-compose?

Мне нужно во время запуска docker-compose записать в определенную папку контейнера файл с конфигурацией. Обычно это можно сделать прокидывая том файл_системы:файл_контейнера. Но в данном случае мне это не подходит, потому что содержимое файла должно зависеть от переменной окружения. Я могу записать такой файл используя команду:
entrypoint:
      - "/bin/sh"
      - "-c"
      - "/bin/echo '${name}:${role}' > /tmp/rolefile && /entrypoint.sh"

но только в папку /tmp При попытке записать в нужную мне папку (к примеру /config) - происходит ошибка прав доступа. Вопрос - можно ли в рамках файла docker-compose.yml средствами командной строки изменить пользователя на root, произвести запись в файл, вернуть права обратно?
Про вариант создать из image свой образ произвести в нем все действия - знаю, тоже не подходит.
  • Вопрос задан
  • 168 просмотров
Решения вопроса 1
black1277
@black1277
Вольный стрелок
Есть способ сделать как вам нужно. Создайте файл user.txt с таким содержимым:
username ALL = NOPASSWD: /usr/bin/tee
вместо username подставьте имя пользователя из вашего контейнера. Для этого выполните в консоли контейнера команду whoami - получите ваш username.
В вашем docker-compose файле добавьте к нужному сервису:
volumes:
    - ./user.txt:/etc/sudoers.d/username

Теперь, при запуске docker-compose будет монтироваться файл c правами sudo на использование команды tee. И у вас получится записать свой файл в нужную папку.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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