**问题:**我用Shiny server pro和docker容器化了一个shiny应用,类似这里:https://support.rstudio.com/hc/en-us/articles/360009986893-Shiny-Server-Pro-with-Docker
**问题:**如何在运行时将环境变量传递给docker容器,以便这些环境变量可以在应用中使用(下面的示例应用)。
使用的docker命令是:docker run -it --rm -p 3838:3838 -e env_variable_interest=testname <shiny_image>
,即变量env_variable_interest未在Shiny服务器中显示/识别/传输。
非常感谢您的评论!
library(shiny)
ui <- fluidPage(
# Application title
titlePanel("Old Faithful Geyser Data"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
sliderInput("bins",
"Number of bins:",
min = 1,
max = 50,
value = 30)
),
# Show a plot of the generated distribution
mainPanel(
plotOutput("distPlot")
))
)
server <- function(input, output) {
output$distPlot <- renderPlot({
# generate bins based on input$bins from ui.R
x <- faithful[, 2]
bins <- seq(min(x), max(x), length.out = input$bins + 1)
hist(x, breaks = bins, col = 'darkgray', border = 'white', main = Sys.getenv("env_variable_interest"))
})
}
# Run the application
shinyApp(ui = ui, server = server)
字符串
3条答案
按热度按时间z9smfwbn1#
我不确定,但我会说你可以在构建镜像时传递env变量,比如:
字符串
其中
$USER
和$PWD
是系统(Linux/Windows.)中已经存在的环境变量。有关详细信息,请查看docker build
的文档。kmbjn2e32#
尝试将环境变量定义放在引号中:
字符串
否则,我猜它试图传递一个名为env_variable_interest=testname的变量,我假设主机操作系统上不存在该变量。
参见docker参考
a0zr77ik3#
我通过在项目目录中创建一个.Renviron文件来解决这个问题,以便在运行时将环境变量复制到.Renviron文件中。
字符串
在dockerfile中添加以下内容:将文件复制到镜像中,使其可执行并将其设置为入口点:
型
请注意,如果你在windows上创建了bash文件,你可能需要在构建时转换它:
型