В настоящее время я собираю смесь ноутбуков R и блестящих панелей управления, которые будут обслуживаться на блестящем сервере. Как можно заметить из Dockerfile, я начинаю с rocker/shiny
образа и go с следующих шагов сборки:
- Установка необходимых пакетов из
renv.lock
файла - Выполните
main.R
, который позаботится о рендеринге файлов .Rmd, и поместите выходные данные. html в папку /reports
. - Скопируйте как связанные документы, так и блестящие информационные панели в папку
shiny-server
для servin. - Скопируйте файл конфигурации сервера Shiny
- Удалите временные файлы (рабочий каталог и загруженные пакеты).
- Expose
8080
port.
Теперь полученное изображение, полученное таким образом, весит ~ 1,79 ГБ, что звучит намного выше, чем я ожидал (базовое rocker/shiny
изображение всего ~ 400 МБ).
Мне интересно, что я отсутствует (возможно, слишком много дублирования слоев?) или что не так с Dockerfile
.
Структура папки проекта:
.
├── cool-report.Rproj
├── Dockerfile
├── R
│ └── main.R
├── readme.md
├── renv
│ ├── activate.R
│ ├── library
│ ├── settings.dcf
│ └── staging
├── renv.lock
├── rmarkdown
│ ├── area1.Rmd
│ ├── area2.Rmd
│ └── data
│ ├── data_import_1.R
│ └── data_import_2.R
├── shiny
│ └── mtcars_example
│ └── app.R
└── shiny-server.conf
Dockerfile:
FROM rocker/shiny:latest
COPY . /tmp
WORKDIR /tmp
RUN echo "options(renv.consent=TRUE)" >> .Rprofile
# Install packages from renv
RUN R -e "install.packages('remotes', repos = c(CRAN = 'https://cloud.r-project.org'))" \
&& R -e "remotes::install_github('rstudio/renv')" \
&& R -e "renv::restore(confirm = FALSE)"
# Render report(s)
RUN Rscript ./R/main.R
# Copy reports and shiny dashboards
RUN cp -r ./reports /srv/shiny-server/reports \
&& cp -r shiny/* /srv/shiny-server/reports
WORKDIR /
# Copy config files and server executable
COPY shiny-server.conf /etc/shiny-server/shiny-server.conf
# Cleanup temp files
RUN rm -rf /tmp/*
# Expose port as on shiny-server.conf
EXPOSE 8080
docker image history -H <image-id>
вывод:
andodet@t480s:~/code/study/cool-report$ docker image history -H d21975ad912d
IMAGE CREATED CREATED BY SIZE COMMENT
d21975ad912d About an hour ago /bin/sh -c #(nop) EXPOSE 8080 0B
11345fbe7c72 About an hour ago /bin/sh -c rm -rf /tmp/* 0B
ce8b33984b85 About an hour ago /bin/sh -c #(nop) COPY file:1d2d0c462c909cc4… 741B
761bc2a982cd About an hour ago /bin/sh -c #(nop) WORKDIR / 0B
5aa2ae037138 About an hour ago /bin/sh -c cp -r ./reports /srv/shiny-server… 1.76MB
12b3a3505ae9 About an hour ago /bin/sh -c Rscript ./R/main.R 1.76MB
69cacc1ad08d About an hour ago /bin/sh -c R -e "install.packages('remotes',… 328MB
eb07c8335c8f 2 hours ago /bin/sh -c echo "options(renv.consent=TRUE)"… 53B
55a14476302f 2 hours ago /bin/sh -c #(nop) WORKDIR /tmp 0B
84e502e37546 2 hours ago /bin/sh -c #(nop) COPY dir:dfcc724126bc931ba… 31.3MB
f40ad3a5dadd 5 weeks ago /bin/sh -c #(nop) CMD ["/usr/bin/shiny-serv… 0B
<missing> 5 weeks ago /bin/sh -c #(nop) COPY file:fef7b189480bb622… 359B
<missing> 5 weeks ago /bin/sh -c #(nop) EXPOSE 3838 0B
<missing> 5 weeks ago /bin/sh -c wget --no-verbose https://downloa… 513MB
<missing> 5 weeks ago /bin/sh -c apt-get update && apt-get install… 313MB
<missing> 2 months ago /bin/sh -c #(nop) CMD ["R"] 0B
<missing> 2 months ago /bin/sh -c apt-get update && apt-get insta… 506MB
<missing> 2 months ago /bin/sh -c #(nop) ENV R_VERSION=3.6.1 LC_AL… 0B
<missing> 2 months ago /bin/sh -c #(nop) ENV BUILD_DATE=2019-12-12 0B
<missing> 2 months ago /bin/sh -c #(nop) ARG BUILD_DATE 0B
<missing> 2 months ago /bin/sh -c #(nop) ARG R_VERSION 0B
<missing> 2 months ago /bin/sh -c #(nop) LABEL org.label-schema.li… 0B
<missing> 2 months ago /bin/sh -c #(nop) CMD ["bash"] 0B
<missing> 2 months ago /bin/sh -c #(nop) ADD file:8f7dc710e276f54a3… 101MB