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
相关产品推荐
相关产品推荐

