【问题标题】:Docker image has error when running from R Studio从 R Studio 运行时 Docker 映像出现错误
【发布时间】:2022-08-10 07:52:21
【问题描述】:

我的 Dockerfile 包含 statworx 网站中显示的用于为 Shiny 应用程序构建映像的确切代码。每当我运行以下代码时:

# Base image https://hub.docker.com/u/rocker/
FROM rocker/shiny:latest

# system libraries of general use
## install debian packages
RUN apt-get update -qq && 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

## update system libraries
RUN apt-get update && 
    apt-get upgrade -y && 
    apt-get clean

# copy necessary files
## app folder
COPY /example-app ./app
## renv.lock file
COPY /example-app/renv.lock ./renv.lock

# install renv & restore packages
RUN Rscript -e \'install.packages(\"renv\")\'
RUN Rscript -e \'renv::consent(provided = TRUE)\'
RUN Rscript -e \'renv::restore()\'

# expose port
EXPOSE 3838

# run app on container start
CMD [\"R\", \"-e\", \"shiny::runApp(\'/app\', host = \'0.0.0.0\', port = 3838)\"]
docker build -t my-shinyapp-image . 

我收到以下错误:无法使用前端 dockerfile.v0 解决:无法创建 LLB 定义:dockerfile 解析错误第 7 行:未知指令:LIBXML2-DEV

如果我删除 LIBXML2-DEV 包,它会在下一个包中出现错误。有没有人遇到过这个问题?

  • 在下一行继续的行末尾使用\\

标签: r shiny dockerfile


【解决方案1】:

按照@HubertL 的建议,这里是可以工作的Dockerfile:

# Base image https://hub.docker.com/u/rocker/
FROM rocker/shiny:latest

# system libraries of general use
## install Debian/Ubuntu packages
RUN apt-get update -qq && \
    apt-get upgrade -y && \
    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
    
## update system libraries
RUN apt-get update && \
    apt-get upgrade -y && \
    apt-get clean


# copy necessary files
## app folder
COPY /docker_for_r ./app
## renv.lock file
COPY /docker_for_r-app/renv.lock ./renv.lock

# install renv & restore packages
RUN Rscript -e 'install.packages("renv")'
RUN Rscript -e 'renv::consent(provided = TRUE)'
RUN Rscript -e 'renv::restore()'

# expose port
EXPOSE 3838

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 2019-12-04
    相关资源
    最近更新 更多