我遇到了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
答案 0 :(得分:1)
致命错误:您必须指定'--save','-no-save'或'--vanilla'
是当R检测到它正在非交互式运行时得到的错误。如果消息有效,则可以选择其中一个选项。
有时这是不适当的触发。在这种情况下,您只需使用--ess
选项。
有一个讨论ENTRYPOINT
here的SO线程。看起来它有助于配置容器,我想您是在告诉它使用sh
shell,也许R可以识别与其交互的任何默认(Docker?)shell。在最后一部分(大约ENTRYPOINT
)上我有点猜测,我也不是很了解Docker,但是鉴于遇到的错误消息,这确实是有道理的。