r - 参数在Dockerfile中的CMD中被忽略

标签 r docker plumber

我有一个dockerfile如下

但是当我运行它并检查日志时,它说:“ARGUMENT'plumber_2.R'忽略了”。我也尝试过不同的端口。

我尝试了不同的端口,但是失败了

FROM r-base:3.5.1

# Install Ubuntu packages
RUN apt-get update && apt-get install -y \
    sudo \
    gdebi-core \
    pandoc \
    pandoc-citeproc \
    libcurl4-gnutls-dev \
    libcairo2-dev/unstable \
    libxt-dev \
    libssl-dev

## RUN R -e 'install.packages(c("devtools"))'
## RUN R -e 'devtools::install_github("trestletech/plumber")'
#

RUN install2.r plumber
RUN R -e "install.packages(c('MLmetrics','datasets','tsDyn','ggplot2','zoo','forecast'), repos='http://cran.rstudio.com/')"
WORKDIR /usr/plumberR

COPY . /usr/plumberR
RUN sudo apt-get install curl

EXPOSE 8000
ENTRYPOINT ["R", "-e", "pr <- plumber::plumb(commandArgs()[4]); pr$run(host='0.0.0.0', port=8000)"]
CMD ["plumber_2.R"]


expected is the output but I am getting "ARGUMENT ["plumbr_2.R"] __ignored__ 

最佳答案

您的第三个ENTRYPOINT参数破坏了序列。应该在其他引号中使用它,但是很遗憾,您在内部将单引号用于主机规范。

选项1

如果您不打算在以后的CMD调用中重写docker run,则可以避免在ENTRYPOINT/CMD中使用JSON模式,并使用类似以下内容的方法:

ENTRYPOINT R -e pr <- plumber::plumb(commandArgs()[4]); pr$run(host='0.0.0.0', port=8000) plumber_2

选项2

将第三个参数放在单引号中,并以某种方式避免将其用于热门规范:
"'pr <- plumber::plumb(commandArgs()[4]); pr$run(port=8000)'"

关于r - 参数在Dockerfile中的CMD中被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54197071/

相关文章:

R 一次查找和替换多个脚本

r - 时间序列图,x 轴在 "year"-"month"在 R

linux - 来自守护进程 : join session keyring: create session key: disk quota exceeded 的错误响应

node.js - 从 npm 脚本运行 docker 不起作用

r - 如何停止水管工服务器

r - 在 curl 中发送 json 文件并使用管道工在 R 中接收它

r - Docker 和 Plumber 的端口转发问题

r - 包 tm 停止字参数

r - 使用 randomForest、Caret 和因子变量预测栅格时出错

docker - 为什么我无法连接到 Redis Docker 组件的端口?