Как перезапустить сервер в Docker контейнере?
У меня есть приложение Dockerized R Shiny, которое расширяет рокер / блестящее изображение. Я бы хотел в какой-то момент перезапустить глянцевый сервер внутри контейнера Docker. Из документации на глянцевый сервер я перепробовал все команды для разных сборок Linux, и ни одна из них не сработала.
Кто-нибудь знает, как перезагружать глянцевый сервер в контейнере Docker?
2 ответа
Команда
docker ps
выводит список всех запущенных контейнеров, получает требуемый идентификатор контейнера. Тогда беги
docker exec -it <container_id> bash
попасть в нужный докер-контейнер. затем
sudo -i
sudo systemctl restart shiny-server
перезагрузить блестящий сервер. Надеюсь, это поможет, systemctl, вероятно, будет работать только на Ubuntu.
Приложение, работающее на блестящем сервере, можно перезапустить, обновив метку времени в файле.
Из документов:
Приложение можно перезапустить, изменив «время изменения» для файла с именем
restart.txt
в каталоге приложения. Проще всего это сделать с помощьюtouch
утилита, как в, которая обновит измененную метку времени в этом файле до текущего времени. При следующем новом подключении к приложению Shiny Server создаст новый процесс R для запуска «нового» (перезапущенного) Shiny Application для этого и будущих пользователей.
(Источник: https://docs.rstudio.com/shiny-server/#restarting-an-application)
Если вам нужно периодически перезапускать приложение (например, если вы установили
app_idle_timeout = 0
но желаете регулярно перезапускаться для получения обновленных данных), вы можете использовать cronjob в
rocker/shiny
контейнер для
touch restart.txt
по желаемому расписанию.