【发布时间】: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
【问题讨论】: