【问题标题】:How to set _auth0.yml values in a docker container for a shiny-server R app如何在 docker 容器中为闪亮服务器 R 应用程序设置 _auth0.yml 值
【发布时间】:2021-07-27 03:11:40
【问题描述】:

仅供参考 - 在闪亮的应用程序方面,我绝对是新手,但我正在尝试帮助闪亮的应用程序开发人员使用 docker 容器部署他们的应用程序(也是 docker 的新手,但我已经完成了其中的一些,所以我明白发生了什么)。

我有一个闪亮的应用程序,部署在 docker 容器中的闪亮服务器上。这个闪亮的应用程序正在使用 auth0,我正在关注这篇文章 (https://github.com/curso-r/auth0),以便 _auth0.yml 文件将从环境变量中获取其秘密。

问题在于如何在 docker 容器中正确设置这些环境变量,以便我的 _auth0.yml 文件将填充它们的值?任何帮助将不胜感激!

我尝试在我的 Dockerfile 中设置“ENV”,

ENV AUTH0_USER="user" \
    AUTH0_KEY="key" \
    AUTH0_SECRET="secret"

如果我这样做,并且 -it 进入我的 docker 容器,我会看到环境变量已设置,但是当我运行应用程序时,环境变量不会填充“api_url”,它会尝试转到"https://.auth0.com/authorize?client_id=&scope=openid%20profile&redirect_uri=http%3A%2F%2Flocalhost%3A3838&response_type=code&state=LmNvuzzUB8"

我的 Dockerfile 看起来像这样:

#shiny-more
FROM rocker/shiny-verse:latest

# install R packages required
RUN apt-get update -qq && apt-get install -y --no-install-recommends vim
RUN mkdir -p /opt/software/setup/R
ADD install_packages.R /opt/software/setup/R/
RUN Rscript /opt/software/setup/R/install_packages.R

#shiny-auth0
# copy the app to the image
COPY *.Rproj /srv/shiny-server/
COPY *.R /srv/shiny-server/
COPY *.xlsx /srv/shiny-server/data/
COPY *.png /srv/shiny-server/www/
COPY logs /srv/shiny-server/logs
COPY rsconnect /srv/shiny-server/rsconnect
COPY _auth0.yml /srv/shiny-server/

# select port
EXPOSE 3838 8080

# allow permission
RUN sudo chown -R shiny:shiny /srv/shiny-server

# Copy further configuration files into the Docker image
COPY shiny-server.sh /usr/bin/shiny-server.sh

RUN ["chmod", "+x", "/usr/bin/shiny-server.sh"]

ENV AUTH0_USER="user" \
    AUTH0_KEY="key" \
    AUTH0_SECRET="secret"

# run app
CMD ["/usr/bin/shiny-server.sh"]

我的 _auth0.yml 文件如下所示:

remote_url: ''
auth0_config:
  api_url: !expr paste0('https://', Sys.getenv("AUTH0_USER"), '.auth0.com')
  credentials:
    key: !expr Sys.getenv("AUTH0_KEY")
    secret: !expr Sys.getenv("AUTH0_SECRET")

编辑:我在这里 (https://groups.google.com/g/shiny-discuss/c/nNs0kztwdWo/m/90InjZXfAPEJ) 读到启动 R 时不会读取环境变量。那么这个解决方案将如何实际工作? https://github.com/curso-r/auth0

【问题讨论】:

    标签: r docker auth0


    【解决方案1】:

    所以从技术上讲,我想出了如何解决这个问题。我在项目的根目录创建了一个“.Renviron”文件,将所有环境变量保存在文件中,然后将其复制到我的 docker 映像中。

    当我启动容器时,我能够成功运行我的应用程序,并提供来自 .Renviron 的数据,以便应用程序可以连接到 auth0 以验证用户身份。

    现在我需要弄清楚如何将此文件传递给 docker 容器,以便安全地拉入此 .Renviron 文件,而不必将其签入到 github 之类的存储库中。

    【讨论】:

      猜你喜欢
      • 2020-09-12
      • 2018-09-13
      • 2016-05-23
      • 2017-05-24
      • 2014-05-07
      • 1970-01-01
      • 2021-11-13
      • 2019-03-23
      • 2016-08-06
      相关资源
      最近更新 更多