我需要一个Dockerfile来运行一个能够使用JDBC连接到Hive的Shiny应用程序。包RJDBC依赖于包rJava,因此是Java。现在,我测试了多个选项:
- 采用具有Java的摇杆/诗句,并手动添加Shiny。
- 采用摇杆/闪亮,并手动添加Java。
这两种选择都部分有效,但并不完全有效。Hive 连接的 R 代码如下所示:
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
但是,我没有成功让它运行。有人有一个与Shiny和Hive/JDBC一起工作的blueproint DOCKERFILE吗?会很棒
米
在错误的方向上呆了几个小时后解决。
问题出在权利管理上。缺少对 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"]