r - Docker compose - R 服务器 - 致命错误:您必须指定“--save”、“--no-save”或“--vanilla”
问题描述
我在使用 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 工作服务器:
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'
附言
我将此添加到我的 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
解决方案
致命错误:您必须指定“--save”、“--no-save”或“--vanilla”
是当 R 检测到它以非交互方式运行时出现的错误。如果消息有效,您可以选择其中一个选项。
有时这是不恰当地触发的。在这些情况下,您只需使用该--ess
选项。
ENTRYPOINT
这里有一个讨论的 SO 线程。看起来它有助于配置容器,我猜你是在告诉它使用sh
shell,也许 R 可以识别它正在与之交互的任何默认(Docker?)shell。我有点猜测最后一部分(关于ENTRYPOINT
),我也不太了解 Docker,但考虑到您遇到的错误消息,它确实有道理。