紀錄R docker建立API

Allen
2 min readJul 20, 2020

--

紀錄使用過程

centos 6 docker 安裝

  1. 加入docker套件

rpm -iUvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

2.利用yum 安裝docker

yum -y install docker-io

3.啟動docker

service docker start #啟動一次

chkconfig docker on #開機時就默認啟動docker

4.下載R的docker

sudo docker pull r-base

5.設定R plumberAPI 需執行的檔案或程式碼

R_main.r

library(plumber)
r <- plumb(“R_controller.R”)
r$run(port=80, host=”0.0.0.0")

R_controller.r

#* Echo back the input
#* @param msg The message to echo
#* @get /echo
function(msg=””){
list(msg = paste0(“The message is: ‘“, msg, “‘“))
}

#* Plot a histogram
#* @png
#* @get /plot
function(){
rand <- rnorm(100)
hist(rand)
}

#* Return the sum of two numbers
#* @param a The first number to add
#* @param b The second number to add
#* @post /sum
function(a, b){
as.numeric(a) + as.numeric(b)
}

準備好後 可以開始建立自己的docker

檔案名稱:Dockerfile

FROM r-base #選擇基礎docker是哪一個
RUN apt-get update -qq && apt-get install -y \ #建立API所需的linux套件
libssl-dev \
libcurl4-gnutls-dev

RUN R -e “install.packages(‘plumber’)” #預先安裝好plumber
##RUN install2.r plumber
COPY R* / #複製當下目錄裡以R為開頭的文件
EXPOSE 80 #設定docker對外的port
CMD [“Rscript”, “R_main.r”] #啟動docker時自動執行

tip:Dockerfile, R_controller.R, R_main.r需要放在同一個資料夾

建立docker

sudo docker build -t plumber-demo .

啟動docker

docker run — rm -p 80:80 plumber-demo

docker run — rm -d -p 80:80 plumber-demo #啟動後在背景執行

在其他位置連接API

參考網頁

https://zhuanlan.zhihu.com/p/86005932

--

--

No responses yet