аргумент был проигнорирован в CMD в Dockerfile - PullRequest
0 голосов
/ 15 января 2019

У меня есть докер-файл, как показано ниже

но когда я запускаю его и проверяю логи, он говорит: "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__ 

1 Ответ

0 голосов
/ 15 января 2019

Ваш третий ENTRYPOINT аргумент нарушает последовательность. Его следует использовать в дополнительных кавычках, но, к сожалению, вы используете внутренние кавычки для спецификации хоста.

Вариант 1

Если вы не планируете переопределять CMD в будущих вызовах на docker run, вы можете избежать схемы JSON в ENTRYPOINT/CMD и использовать что-то вроде:

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

Вариант 2

Поместите 3-й аргумент в одинарные кавычки и избегайте использования их для горячей спецификации:

"'pr <- plumber::plumb(commandArgs()[4]); pr$run(port=8000)'"
...