r - 运行 R 的 Docker 容器中的“文件 '.Renviron' 无法打开读取”
问题描述
我目前正在尝试对我编写的 RShiny 应用程序进行 docker 化,并且在我的脚本开头读取 .Renviron 变量时遇到问题。下面是我的控制台输出。
❯ docker run --rm -p 6969:6969 r-app
Attaching package: ‘lubridate’
The following objects are masked from ‘package:base’:
date, intersect, setdiff, union
── Attaching packages ─────────────────────────────────────── tidyverse 1.3.0 ──
✔ ggplot2 3.3.3 ✔ purrr 0.3.4
✔ tibble 3.0.6 ✔ dplyr 1.0.4
✔ tidyr 1.1.2 ✔ forcats 0.5.1
✔ readr 1.4.0
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ lubridate::as.difftime() masks base::as.difftime()
✖ readr::col_factor() masks scales::col_factor()
✖ lubridate::date() masks base::date()
✖ purrr::discard() masks scales::discard()
✖ dplyr::filter() masks stats::filter()
✖ lubridate::intersect() masks base::intersect()
✖ dplyr::lag() masks stats::lag()
✖ lubridate::setdiff() masks base::setdiff()
✖ lubridate::union() masks base::union()
Warning message:
In readRenviron(".Renviron") :
file '.Renviron' cannot be opened for reading
Error: Failed to connect: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Execution halted
下面是我的 Dockerfile。.Renviron 文件与我的 app.R 文件存在于同一文件夹中,所以我不确定为什么它无法打开它。
FROM rocker/verse:latest
# Install Ubuntu packages
RUN apt-get update && apt-get install -y \
sudo \
gdebi-core \
pandoc \
pandoc-citeproc \
libcurl4-gnutls-dev \
libcairo2-dev \
libxt-dev \
libssl-dev
# Download and install ShinyServer
RUN wget --no-verbose --no-check-certificate https://download3.rstudio.org/ubuntu-14.04/x86_64/shiny-server-1.5.7.907-amd64.deb && \
gdebi shiny-server-1.5.7.907-amd64.deb
RUN R -e "install.packages('lubridate', repos='http://cran.rstudio.com/')"
RUN R -e "install.packages('RMariaDB', repos='http://cran.rstudio.com/')"
RUN R -e "install.packages('scales', repos='http://cran.rstudio.com/')"
RUN R -e "install.packages('shiny', repos='http://cran.rstudio.com/')"
RUN R -e "install.packages('stringr', repos='http://cran.rstudio.com/')"
RUN R -e "install.packages('tidyverse', repos='http://cran.rstudio.com/')"
# Copy configuration files into the Docker image
#COPY shiny-server.sh /usr/bin/shiny-server.sh
#COPY ttp-internal-reporting.Rproj /srv/shiny-server/
#COPY app.R /srv/shiny-server/
#COPY .Renviron /srv/shiny-server/
COPY . /srv/shiny-server/
# select port
EXPOSE 6969
CMD ["Rscript", "srv/shiny-server/app.R"]
互联网上确实没有很多文档或示例可用于读取 .Renviron 文件以用于 dockerized 应用程序,我不想避免使用此文件,因为它包含用于获取我们数据的数据库凭据。任何帮助是极大的赞赏。
解决方案
FROM rocker/r-ubuntu:20.04
RUN apt-get update && apt-get upgrade -y && apt-get clean
RUN apt-get install -y \
libssl-dev \
libcurl4-openssl-dev \
&& apt-get clean
RUN R -e 'install.packages("curl")'
RUN R -e 'install.packages("usethis")'
COPY .Renviron /root/.Renviron
使用这个图像和这个 Dockerfile,在 COPY 之后的下一层,当运行 R 命令时,它会识别 .Renviron 中设置的变量
例如,如果我在 .Renviron 中插入了 GITHUB_PAT,那么在接下来的层中,我可以从我的 github 安装我自己的私有包
推荐阅读
- python - 带有 alpha-vantage pandas 数据的 Altair 图表
- python - 多对多查询的 Django 模型文件更新
- javascript - “保留”波纹效果直到 mouseup
- c# - 尝试发送推送通知时出现 Firebase 403 禁止错误
- python - 在熊猫数据框上运行 sql 查询
- amazon-web-services - CloudWatch 指标过滤器 - 按顺序查找术语的外观
- r - 在整个数据集上使用 cor() 与 R 中的两个变量
- typo3 - TYPO3 felogin 插件没有 CSS
- react-native - 如何停止在 chrome 上打开 expo 远程 js 调试?
- java - JPA:@OneToMany 映射和复合主键 - 找不到逻辑列错误