Как создать Dockerfile, который запускает приложение Shiny с использованием JDBC / Hive (требуется rJava)? - PullRequest
1 голос
/ 06 июня 2019

Мне нужен Dockerfile для запуска приложения Shiny, способного подключаться к Hive с помощью JDBC.Пакет RJDBC зависит от пакета rJava, следовательно, Java.Теперь я протестировал несколько вариантов:

  • Взятие рокер / стих с Java и добавление Shiny вручную.
  • Взятие рокер / блестящий и добавить Java вручную.

Оба варианта работали частично, но не полностью.Код R для соединения Hive:

require(RJDBC)
urlJDBC = "jdbc:hive2://...:8443/;ssl=true;sslTrustStore=./cacerts;trustStorePassword=changeit?hive.server2.transport.mode=http;hive.server2.thrift.http.path=gateway/default/hive"
driver = JDBC("org.apache.hive.jdbc.HiveDriver", "hive-jdbc-standalone.jar", identifier.quote="`")
con = dbConnect(driver, urlJDBC, "username", "password")

Я также добавил в Dockerfile файл JDBC Jar со строкой:

ADD ... ./hive-jdbc-standalone.jar

Однако я не смогзаставить его бежать.Есть ли у кого-нибудь blueproint DOCKERFILE, который работает с Shiny и Hive / JDBC?Было бы здорово

М

1 Ответ

1 голос
/ 06 июня 2019

Решено после нескольких часов неправильного направления.

Проблема была в управлении правами. Отсутствует доступ для чтения к файлу JAR .

Новый DOCKERFILE довольно прост:

FROM rocker/shiny

# Download and rename JAR file with JDBC HIVE driver.
WORKDIR /srv/shiny-server/apps/shinyhive
ADD <..jar-on-local-server..> ./hive-jdbc-standalone.jar

RUN apt-get update && apt-get install -y \
    openjdk-8-jdk liblzma-dev libbz2-dev libicu-dev libssl-dev \
    && R CMD javareconf

RUN R -e "install.packages('RJDBC', repos='http://cran.r-project.org')"

RUN chmod 777 -R .
COPY . .
COPY ./shiny-server.sh /usr/bin/shiny-server.sh

EXPOSE 3838

CMD ["/usr/bin/shiny-server.sh"]
...