Как получить доступ к громкости Docker из приложения Shiny? - PullRequest
0 голосов
/ 23 мая 2019

У меня есть док-станция Shiny, которая должна считывать данные из некоторых файлов RDS. Эти файлы RDS должны обновляться пару раз в месяц. Я думал, что решить это с объемом, но у меня есть проблема с пользователем разрешения. Приложение Shiny работает как блестящий пользователь, и у приложения нет разрешения на чтение в директории тома. Я не могу выполнить команду «chownФИЛ: блестящий», потому что я теряю права доступа к директории тома на хост-компьютере. Есть ли способ решить эту проблему?

Заранее спасибо!

Dockerfile

FROM rocker/shiny:3.5.3
...
COPY shiny-server.conf /etc/shiny-server/shiny-server.conf 
COPY .Renviron /srv/shiny-server 
RUN chown -R shiny:shiny /srv/shiny-server/ 
RUN cd /srv/shiny-server && git pull origin features/DTedit

блестящий-server.conf

# Instruct Shiny Server to run applications as the user "shiny"
run_as shiny;

# Define a server that listens on port 3838
server {
  listen 3838;

  # Define a location at the base URL
  location / {

    # Host the directory of Shiny Apps stored in this directory
    site_dir /srv/shiny-server;

    # Log all Shiny output to files in this directory
    log_dir /var/log/shiny-server;

    # When a user visits the base URL rather than a particular application,
    # an index of the applications available in this directory will be shown.
    directory_index on;
  }
}

Эта статья говорит об этом, но я не могу решить ее.

UPDATE: Наконец, согласно комментарию r2evans, решение заключается в предоставлении 755 разрешений через chmod для общего каталога (тома). Таким образом, на стороне хоста я могу продолжить обновление файлов RDS, а на стороне док-станции приложение Shiny может обращаться к файлам и читать их, потому что «5» разрешает другим. Чтобы эффективно обновить данные, мне нужно запустить команду Docker после перезаписи файлов RDS в директории тома:

docker exec -it container_name sh -c "cd /srv/shiny-server/ && touch /srv/shiny-server/restart.txt"

1 Ответ

0 голосов
/ 23 мая 2019

Попробуйте, зайдите внутрь запущенного контейнера и выполните id.это скажет вам, что такое uid пользователя в контейнере Docker, а затем прикрепит ваши подключенные файлы к этому идентификатору.дайте мне знать, если это сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...