Контейнер блестящего приложения не загружается в браузер - PullRequest
0 голосов
/ 18 октября 2018

Я упаковал блестящее приложение и попытался развернуть его на GCP с помощью Kubernetes, но каждый раз, когда я получаю внешний IP-адрес и загружаю его в браузер, я получаю сообщение об ошибке «из-за этого сайта невозможно установить соединение из-за отказа».Поэтому я попытался запустить контейнер на локальном хосте для устранения неполадок, и теперь я получаю сообщение об ошибке «127.0.0.1 не отправил никаких данных. ERR_EMPTY_RESPONSE».Я неустанно искал в Интернете решение, но мне кажется, что ничего не работает.Кроме того, ни одно из решений не предназначено для блестящего контейнера приложений.Во многих исправлениях упоминается порт, но я все еще застрял.Кстати, у меня на Mac установлен xampp.Возможно ли, что xampp и мой контейнер Docker пытаются использовать один и тот же порт, или есть проблема с моим кодом файла Docker?Простите меня, но я новичок в контейнерах и до сих пор только следовал процедуре документации.Ниже приведен мой код файла Docker:

Dockerfile

# Install R version 3.5.1
FROM r-base:3.5.1

# Install Ubuntu packages
RUN apt-get update && apt-get install -y \
sudo \
gdebi-core \
pandoc \
pandoc-citeproc \
libcurl4-gnutls-dev \
libcairo2-dev/unstable \
libxt-dev \
libssl-dev

# Download and install ShinyServer (latest version)
RUN wget --no-verbose https://s3.amazonaws.com/rstudio-shiny-server-os- 
build/ubuntu-12.04/x86_64/VERSION -O "version.txt" && \
VERSION=$(cat version.txt)  && \
wget --no-verbose "https://s3.amazonaws.com/rstudio-shiny-server-os- 
build/ubuntu-12.04/x86_64/shiny-server-$VERSION-amd64.deb" -O ss-latest.deb && 
\
gdebi -n ss-latest.deb && \
rm -f version.txt ss-latest.deb

# Install R packages that are required
# TODO: add further package if you need!
RUN R -e 

"install.packages(c('shiny','shinyjs','tools','foreign','XLConnect'), 
repos='http://cran.rstudio.com/')"

# Copy configuration files into the Docker image
COPY shiny-server.conf  /etc/shiny-server/shiny-server.conf
COPY /app /srv/shiny-server/

# Make the ShinyApp available at port 80
EXPOSE 80

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

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

Буду признателен, если кто-нибудь сможет мне помочь.

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Сначала мне нужно было создать файл Rprofile.site и поместить его в тот же каталог, что и dockerfile и shinyapp.Затем я создал свой собственный базовый образ со всеми необходимыми библиотеками для приложения и вызвал его из моего dockerfile.Вот окончательный код:

Rprofile.site

local({
options(shiny.port = 3838, shiny.host = "0.0.0.0")
})

Dockerfile

FROM bimage_rpackages

# Copy the app to the image
RUN mkdir /root/shinyapp
COPY app/shinyapp /root/shinyapp

COPY app/Rprofile.site /usr/lib/R/etc/

# Make the ShinyApp available at port 3838
EXPOSE 3838

CMD ["R", "-e", "shiny::runApp('/root/shinyapp')"]
0 голосов
/ 19 октября 2018

Вам не нужен блестящий сервер.

добавьте

app <- shinyApp(ui = ui, server = server)
runApp(app, host ="0.0.0.0", port = 80, launch.browser = FALSE)

к вашему R-скрипту и

EXPOSE 80
CMD ["R", "-e", "library(shiny); source('/root/pathToYourScript/script.R')"]

к вашему Dockerfile.

...