Docker compose - R server - Фатальная ошибка: вы должны указать '--save', '--no-save' или '--vanilla' - PullRequest
0 голосов
/ 02 июля 2018

У меня проблема с 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, который имеет рабочий сервер Python, которому нужно вызвать R:

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

Я добавил это в свой докер-файл и получил следующее:

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 голосов
/ 02 июля 2018

Неустранимая ошибка: вы должны указать '--save', '--no-save' или '--vanilla'

- это ошибка, которую вы получаете, когда R обнаруживает, что она выполняется неинтерактивно. Если сообщение действительно, вы можете выбрать один из вариантов.

Иногда это неуместно срабатывает. В этих случаях вы просто используете опцию --ess.

Существует SO поток, который обсуждает ENTRYPOINT здесь . Похоже, это помогает настроить контейнер, и я предполагаю, что вы говорите ему использовать оболочку sh, которую, возможно, R распознает по любой оболочке по умолчанию (Docker?), С которой он взаимодействовал. Я немного догадываюсь о последней части (о ENTRYPOINT), я тоже плохо знаю Docker, но это имеет смысл, учитывая то сообщение об ошибке, с которым вы столкнулись.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...