Докеризация сервера Shiny Pro и передача ему переменных окружения - PullRequest
0 голосов
/ 24 апреля 2020

Проблема: Я упаковал блестящее приложение с Shiny server pro и docker. Аналогично здесь: 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)

Ответы [ 2 ]

0 голосов
/ 24 апреля 2020

Попробуйте поместить определение переменной среды в кавычки:

docker run -it --rm -p 3838:3838 -e "env_variable_interest=testname" <shiny_image>

В противном случае, я предполагаю, что он пытается передать переменную с именем env_variable_interest = testname, которая, как я полагаю, не существует в операционной системе хоста.

См. docker ссылка

0 голосов
/ 24 апреля 2020

Я не уверен, но я бы сказал, что вы можете передать переменные env во время создания образа, например, так:

docker build --build-arg USER=$USER --build-arg PWD=$PWD -t my_image .

, где $USER и $PWD переменные окружения, уже существующие в вашей системе (Linux / Windows ...). Проверьте документацию docker build для более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...