Docker撰写-R服务器-致命错误:您必须指定'--save','-no-save'或'--vanilla'

时间:2018-07-02 19:09:48

标签: r docker docker-compose dockerfile

我遇到了docker-compose问题。.我是docker的新手。

我可以成功构建我的R服务器。这是Dockerfile:

FROM ubuntu:16.04

RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9
RUN echo "deb http://cran.r-project.org/bin/linux/ubuntu trusty/" |  tee -a /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y build-essential
RUN apt-get install -y curl libcurl4-openssl-dev
RUN apt-get install -y apt-utils

RUN apt-get install -y r-base
RUN apt-get install -y r-base-dev
RUN apt-get install -y libssl-dev

ENTRYPOINT ["/usr/bin/R"]

这是我的docker compose文件,其中包含一个需要调用R的python worker服务器:

version: '3'
services:
  worker:
    build: .
    image: mtm/mtm-worker-server
  r-server:
    image: "mtm/mtm-rserver"

这是错误:

docker-compose up
Recreating compose-mtm-worker_r-server_1 ... done
Starting compose-mtm-worker_worker_1     ... done
Attaching to compose-mtm-worker_r-server_1, compose-mtm-worker_worker_1
r-server_1  | Fatal error: you must specify '--save', '--no-save' or '--vanilla'
compose-mtm-worker_r-server_1 exited with code 2

我不知道为什么会收到此错误:

Fatal error: you must specify '--save', '--no-save' or '--vanilla'

PS

我将此添加到了dockerfile中,并得到了以下内容:

ENTRYPOINT ["sh", "-c"]

为什么会有所不同?

Recreating compose-mtm-worker_r-server_1 ... done
Starting compose-mtm-worker_worker_1     ... done
Attaching to compose-mtm-worker_worker_1, compose-mtm-worker_r-server_1
r-server_1  | sh: 0: -c requires an argument
compose-mtm-worker_r-server_1 exited with code 2

1 个答案:

答案 0 :(得分:1)

  

致命错误:您必须指定'--save','-no-save'或'--vanilla'

是当R检测到它正在非交互式运行时得到的错误。如果消息有效,则可以选择其中一个选项。

有时这是不适当的触发。在这种情况下,您只需使用--ess选项。

有一个讨论ENTRYPOINT here的SO线程。看起来它有助于配置容器,我想您是在告诉它使用sh shell,也许R可以识别与其交互的任何默认(Docker?)shell。在最后一部分(大约ENTRYPOINT)上我有点猜测,我也不是很了解Docker,但是鉴于遇到的错误消息,这确实是有道理的。