【问题标题】:argument got ignored in CMD in Dockerfile参数在 Dockerfile 的 CMD 中被忽略
【发布时间】:2019-06-09 08:37:50
【问题描述】:

我有一个 dockerfile 如下

但是当我运行它并检查日志时,它显示“ARGUMENT 'plumber_2.R' ignored”。我也尝试过不同的端口。

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

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__ 

【问题讨论】:

  • 你为什么在入口点运行pr &lt;- plumber::plumb(commandArgs()[4]); pr$run(host='0.0.0.0', port=8000),在CMD运行plumber_2.R。我想知道前者可能在plumber_2.R
  • 没听懂,你能写下(以代码的形式)你在说什么吗?
  • ENTRYPOINT ["R", "-e", "pr

标签: r docker plumber


【解决方案1】:

您的第三个ENTRYPOINT 参数打破了顺序。它应该用额外的引号引起来,但不幸的是,您在内部使用单引号来指定主机。

选项 1

如果您不打算在将来调用 docker run 时覆盖 CMD,则可以避免在 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)'"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    • 1970-01-01
    • 2020-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多