[英]Docker run to execute script in mount without exiting container automatically?
我在已安裝文件夾的根目錄中有一個簡單的 bash 腳本“test.sh”:
#!/bin/bash
Rscript -e "source('/home/rstudio/mount-folder/src/controller.R')";
但是,當我嘗試掛載文件夾並使用 docker 啟動容器時,運行如下:
docker run -d -p 8000:8787 -e ROOT=true -e DISABLE_AUTH=true --name container -v mount-folder/:/home/rstudio/ image_name /home/rstudio/test.sh
上面的運行命令啟動容器但自動退出。
我正在尋找啟動容器的 docker 運行命令,安裝文件夾然后執行安裝文件夾中的 bash 腳本而不退出容器。
(** 不想使用 go 和 docker exec 命令,因為其他原因它不適合我的用例)
Dockerfile:
FROM rocker/rstudio:4.0.2
//some RUN commands to install necessary r packages
EXPOSE 8787
CMD tail -f /dev/null
其他詳情:
編輯:
Docker 容器在分離模式下運行時自動關閉。 我認為這篇文章提出了一個很好的解決方案:
http://bigdatums.net/2017/11/07/how-to-keep-docker-containers-running/
您可以將tail -f /dev/null
添加為 bash 腳本中的最后一個命令,這樣腳本將永遠不會停止,除非它被告知這樣做。
當您執行docker run [options] image_name [cmd]
時,您指定的命令將成為容器的命令並替換 dockerfile 中指定的任何命令(這就是添加CMD tail -f /dev/null
不執行任何操作的原因)。 如果你在最后沒有/home/rstudio/test.sh
的情況下運行你的容器,它應該保持運行。
解決方案是更新您的腳本以在末尾添加tail
命令。
#!/bin/bash
Rscript -e "source('/home/rstudio/mount-folder/src/controller.R')";
exec tail -f /dev/null
如果您無法更新該腳本,則可以將其添加到傳遞給容器的命令中,例如: docker run [options] image_name bash -c '/home/rstudio/test.sh && exec tail -f /dev/null'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.