У меня есть док-станция 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"