You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker化Shiny应用连接Hive启动异常排查与解决

问题:Docker化Shiny应用连接Hive启动失败排查与解决

问题详情

我开发了一个从Hive HDFS读取数据的Shiny应用,R语言连接Hive的代码如下:

drv <- JDBC("org.apache.hive.jdbc.HiveDriver",
            classPath = c("/app/jdbc/hive-jdbc-standalone.jar")) 

conn <- dbConnect(drv, 
                  "jdbc:hive2://10.35.105.35:10000/default", "hive", "hive")

尝试将该Shiny应用Docker化时,镜像构建过程无报错,但运行容器后日志中没有“Listening on 'port'”的启动信息,访问localhost:3838无法打开应用。希望有人帮忙排查问题,或提供Docker环境下用R/Python连接Hive的Dockerfile示例。

以下是我使用的原Dockerfile:

FROM rocker/r-ver:latest

RUN apt-get update -qq && apt-get install -y openjdk-8-jdk

RUN apt-get update && apt-get install -y \
    openjdk-8-jdk \
    openjdk-8-jre 

ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
ENV PATH=$PATH:$JAVA_HOME/bin


ARG DEBIAN_FRONTEND=noninteractive


RUN apt-get update -qq && apt-get -y --no-install-recommends install \
    curl \
    gnupg \
    && curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
    && curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list \
    && apt-get update -qq \
    && ACCEPT_EULA=Y apt-get -y --no-install-recommends install msodbcsql17


RUN apt-get update -qq && apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade


RUN apt-get install -y r-cran-rjava


RUN R CMD javareconf


RUN apt-get -y --no-install-recommends install \
    libxml2-dev \
    libcairo2-dev \
    libsqlite3-dev \
    libmariadbd-dev \
    libpq-dev \
    libssh2-1-dev \
    unixodbc-dev \
    libcurl4-openssl-dev \
    libssl-dev


RUN apt-get update && \
    apt-get upgrade -y && \
    apt-get clean


RUN R -e "install.packages(pkgs=c('RODBC','odbc','DBI','shinyjs','dplyr','lubridate','ggplot2','hrbrthemes','tidyr','shinyWidgets','shinydashboardPlus','flexdashboard','shiny','tidyverse','shinydashboard', 'xgboost', 'DT', 'plotly', 'tidymodels', 'ggridges', 'tidytext', 'RJDBC'), repos='https://cran.rstudio.com')"


WORKDIR /app


COPY global.R /app/
COPY ui.R /app/
COPY server.R /app/
COPY oee_tampo_flt.csv /app/
COPY jdbc /app/jdbc

RUN chmod 777 -R .


EXPOSE 3838

CMD ["R", "-e", "shiny::runApp('/app', host='0.0.0.0', port=3838)"]

解决方法

通过修改Dockerfile中的JDK和JRE版本,成功解决了启动问题。修改后的相关代码如下:

RUN apt-get update && apt-get install -y \
    openjdk-11-jdk \
    openjdk-11-jre 

ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/

内容的提问来源于stack exchange,提问作者Aji Goja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 17:33:18