Настройка образа докера с драйверами R и SQL-сервера - PullRequest
0 голосов
/ 23 октября 2018

Это, вероятно, будет недостаточно конкретизированный вопрос, но, поскольку я потратил около двух дней, пытаясь заставить его работать, я подумал, что могу попробовать:

Я пытаюсь настроитьобраз докера, который может связываться с БД SQL Server через R (с использованием RODBC или odbc)

Проблема, с которой я сталкиваюсь, заключается в том, что мне не удается установить (или найти) необходимые драйверы SQL-сервера при установкесоединение при запуске:

 con <- dbConnect(odbc(),
             Driver = "SQL Server",
             Server = "xxxx",
             Database = "xxxx",
             UID = "xxx",
             PWD = “xxxx")

Кто-нибудь настраивал подобный образ Docker?

РЕДАКТИРОВАТЬ:

Вот мой текущий файл Docker (я пробовал несколько вещей, ноэтот воспроизводит сообщение об ошибке)

    FROM rocker/r-ver:3.5.0

    RUN apt-get -qq update \
        && apt-get -qq dist-upgrade -y \
        && apt-get -qq install git unixodbc unixodbc-dev postgresql-9.5 odbc-postgresql libssl-dev sudo -y

    COPY . /usr/local/src/myscripts
    WORKDIR /usr/local/src/myscripts

    RUN R -e 'install.packages("odbc")'
    RUN R -e 'install.packages("plumber")'

    EXPOSE 8000

    CMD ["Rscript", "plumber.R"]

И запуск контейнера и выполнение команд odbc дает:

    > library('odbc')
    > con <- dbConnect(odbc(),
    +                    Driver = "SQL Server",
    +                    Server = "xx",
    +                    Database = "xx",
    +                    UID = "xx",
    +                    PWD = "xx")
    Error: nanodbc/nanodbc.cpp:950: 01000: [unixODBC][Driver Manager]Can't open lib 'SQL Server' : file not found

1 Ответ

0 голосов
/ 23 октября 2018

В вашем Dockerfile вы устанавливаете драйверы ODBC для PostgrSQL, но не для сервера MS SQL.В образе докера, который нуждался в MS SQL, я использовал драйверы от Microsoft:

FROM rocker/r-ver:3.5.1

RUN apt-get update \
 && apt-get install --yes --no-install-recommends \
        apt-transport-https \
        curl \
        gnupg \
        unixodbc-dev \
 && curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
 && curl https://packages.microsoft.com/config/debian/9/prod.list > /etc/apt/sources.list.d/mssql-release.list \
 && apt-get update \
 && ACCEPT_EULA=Y apt-get install --yes --no-install-recommends msodbcsql17 \
 && install2.r odbc \
 && apt-get clean \
 && rm -rf /var/lib/apt/lists/* \
 && rm -rf /tmp/*

В скрипте R я тогда использовал

con <- odbc::dbConnect(odbc::odbc(),
                 Driver = "ODBC Driver 17 for SQL Server",
                 Server = Sys.getenv("SERVER"),
                 Database = Sys.getenv("DB"),
                 UID = Sys.getenv("USER"),
                 PWD = Sys.getenv("PWD"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...