При попытке dockerise r-блестящего приложения у меня возникают проблемы с аннулированием кэша Docker. Изменение файла в /app
, похоже, приводит к потере кеша только при выводе docker-compose build
, это не отражается в контейнере, где файлы вообще не изменяются. Ниже выводится команда build:
Building app
Step 1/13 : FROM rocker/shiny:latestBuilding app
Step 1/13 : FROM rocker/shiny:latest
---> f184f6aaa052
Step 2/13 : RUN apt-get update && apt-get install libssl-dev -y nano libxml2-dev libsodium-dev libmariadbclient-dev libhiredis-dev
---> Using cache
---> 03a28c35ec29
Step 3/13 : COPY install_packages.R /tmp/install_packages.R
---> Using cache
---> f0f98562976d
Step 4/13 : RUN Rscript /tmp/install_packages.R
---> Using cache
---> 1f66021a00f5
Step 5/13 : RUN R -e "install.packages('devtools', dependencies = TRUE, repos = 'http://cran.rstudio.com/')"
---> Using cache
---> c65054a0b033
Step 6/13 : RUN R -e "devtools::install_github('PaulC91/shinyauthr', dependencies = TRUE)"
---> Using cache
---> 29135386a24f
Step 7/13 : ARG CACHEPOP=1
---> Using cache
---> 2916da43a88f
Step 8/13 : ADD shiny-server.conf /etc/shiny-server/shiny-server.conf
---> Using cache
---> f1289d6aba53
Step 9/13 : ADD shiny-server.sh /usr/bin/shiny-server.sh
---> Using cache
---> 87f462480ada
Step 10/13 : COPY app /srv/shiny-server/app
---> d89ae8e7fa85
Step 11/13 : RUN ["chmod", "+x", "/usr/bin/shiny-server.sh"]
---> Running in 27c53685d6ad
Removing intermediate container 27c53685d6ad
---> 6cb6baf130af
Step 12/13 : EXPOSE 3838
---> Running in 4425302562bb
Removing intermediate container 4425302562bb
---> e6c4fc565195
Step 13/13 : CMD ["usr/bin/shiny-server.sh"]
---> Running in 7723d0219648
Removing intermediate container 7723d0219648
---> 742d77a0a30e
Successfully built 742d77a0a30e
Successfully tagged redis-test:latest
---> f184f6aaa052
Step 2/13 : RUN apt-get update && apt-get install libssl-dev -y nano libxml2-dev libsodium-dev libmariadbclient-dev libhiredis-dev
---> Using cache
---> 03a28c35ec29
Step 3/13 : COPY install_packages.R /tmp/install_packages.R
---> Using cache
---> f0f98562976d
Step 4/13 : RUN Rscript /tmp/install_packages.R
---> Using cache
---> 1f66021a00f5
Step 5/13 : RUN R -e "install.packages('devtools', dependencies = TRUE, repos = 'http://cran.rstudio.com/')"
---> Using cache
---> c65054a0b033
Step 6/13 : RUN R -e "devtools::install_github('PaulC91/shinyauthr', dependencies = TRUE)"
---> Using cache
---> 29135386a24f
Step 7/13 : ARG CACHEPOP=1
---> Using cache
---> 2916da43a88f
Step 8/13 : ADD shiny-server.conf /etc/shiny-server/shiny-server.conf
---> Using cache
---> f1289d6aba53
Step 9/13 : ADD shiny-server.sh /usr/bin/shiny-server.sh
---> Using cache
---> 87f462480ada
Step 10/13 : COPY app /srv/shiny-server/app
---> d89ae8e7fa85
Step 11/13 : RUN ["chmod", "+x", "/usr/bin/shiny-server.sh"]
---> Running in 27c53685d6ad
Removing intermediate container 27c53685d6ad
---> 6cb6baf130af
Step 12/13 : EXPOSE 3838
---> Running in 4425302562bb
Removing intermediate container 4425302562bbBuilding app
Step 1/13 : FROM rocker/shiny:latest
---> f184f6aaa052
Step 2/13 : RUN apt-get update && apt-get install libssl-dev -y nano libxml2-dev libsodium-dev libmariadbclient-dev libhiredis-dev
---> Using cache
---> 03a28c35ec29
Step 3/13 : COPY install_packages.R /tmp/install_packages.R
---> Using cache
---> f0f98562976d
Step 4/13 : RUN Rscript /tmp/install_packages.R
---> Using cache
---> 1f66021a00f5
Step 5/13 : RUN R -e "install.packages('devtools', dependencies = TRUE, repos = 'http://cran.rstudio.com/')"
---> Using cache
---> c65054a0b033
Step 6/13 : RUN R -e "devtools::install_github('PaulC91/shinyauthr', dependencies = TRUE)"
---> Using cache
---> 29135386a24f
Step 7/13 : ARG CACHEPOP=1
---> Using cache
---> 2916da43a88f
Step 8/13 : ADD shiny-server.conf /etc/shiny-server/shiny-server.conf
---> Using cache
---> f1289d6aba53
Step 9/13 : ADD shiny-server.sh /usr/bin/shiny-server.sh
---> Using cache
---> 87f462480ada
Step 10/13 : COPY app /srv/shiny-server/app
---> d89ae8e7fa85
Step 11/13 : RUN ["chmod", "+x", "/usr/bin/shiny-server.sh"]
---> Running in 27c53685d6ad
Removing intermediate container 27c53685d6ad
---> 6cb6baf130afBuilding app
Step 1/13 : FROM rocker/shiny:latest
---> f184f6aaa052
Step 2/13 : RUN apt-get update && apt-get install libssl-dev -y nano libxml2-dev libsodium-dev libmariadbclient-dev libhiredis-dev
---> Using cache
---> 03a28c35ec29
Step 3/13 : COPY install_packages.R /tmp/install_packages.R
---> Using cache
---> f0f98562976d
Step 4/13 : RUN Rscript /tmp/install_packages.R
---> Using cache
---> 1f66021a00f5
Step 5/13 : RUN R -e "install.packages('devtools', dependencies = TRUE, repos = 'http://cran.rstudio.com/')"
---> Using cache
---> c65054a0b033
Step 6/13 : RUN R -e "devtools::install_github('PaulC91/shinyauthr', dependencies = TRUE)"
---> Using cache
---> 29135386a24f
Step 7/13 : ARG CACHEPOP=1
---> Using cache
---> 2916da43a88f
Step 8/13 : ADD shiny-server.conf /etc/shiny-server/shiny-server.conf
---> Using cache
---> f1289d6aba53
Step 9/13 : ADD shiny-server.sh /usr/bin/shiny-server.sh
---> Using cache
---> 87f462480ada
Step 10/13 : COPY app /srv/shiny-server/app
---> d89ae8e7fa85
Step 11/13 : RUN ["chmod", "+x", "/usr/bin/shiny-server.sh"]
---> Running in 27c53685d6ad
Removing intermediate container 27c53685d6ad
---> 6cb6baf130af
Step 12/13 : EXPOSE 3838
---> Running in 4425302562bb
Removing intermediate container 4425302562bb
---> e6c4fc565195
Step 13/13 : CMD ["usr/bin/shiny-server.sh"]
---> Running in 7723d0219648
Removing intermediate container 7723d0219648
---> 742d77a0a30e
Successfully built 742d77a0a30e
Successfully tagged redis-test:latest
Step 12/13 : EXPOSE 3838
---> Running in 4425302562bb
Removing intermediate container 4425302562bb
---> e6c4fc565195
Step 13/13 : CMD ["usr/bin/shiny-server.sh"]
---> Running in 7723d0219648
Removing intermediate container 7723d0219648
---> 742d77a0a30e
Successfully built 742d77a0a30e
Successfully tagged redis-test:latest
---> e6c4fc565195
Step 13/13 : CMD ["usr/bin/shiny-server.sh"]
---> Running in 7723d0219648
Removing intermediate container 7723d0219648
---> 742d77a0a30e
Successfully built 742d77a0a30e
Successfully tagged redis-test:latest
Как вы можете видеть, кеш действительно отключен на шаге 10/13 , но это не отражается внутри контейнера, где я до сих порувидеть старый файл (без добавления новых файлов). ADD
и COPY
дают одинаковое поведение.
Это нормальное поведение или что-то, чего я не вижу?
Структура папки и Dockerfile, ради тщательности:
.
├── app
│ ├── global.R
│ ├── mock_users.R
│ ├── server.R
│ ├── test.txt
│ └── ui.R
├── docker-compose.yml
├── Dockerfile
├── install_packages.R
├── readme.md
├── redis_cache_test.Rproj
├── shiny-server.conf
└── shiny-server.sh
FROM rocker/shiny:latest
# install openssl
# libsodium for shinyauthr
RUN apt-get update && apt-get install libssl-dev -y \
nano \
libxml2-dev \
libsodium-dev \
libmariadbclient-dev \
libhiredis-dev
# install packages and remove downloaded files
COPY install_packages.R /tmp/install_packages.R
RUN Rscript /tmp/install_packages.R
# install shiny authr package
RUN R -e "install.packages('devtools', dependencies = TRUE, repos = 'http://cran.rstudio.com/')"
RUN R -e "devtools::install_github('PaulC91/shinyauthr', dependencies = TRUE)"
# copy config files
ARG CACHEPOP=1
ADD shiny-server.conf /etc/shiny-server/shiny-server.conf
ADD shiny-server.sh /usr/bin/shiny-server.sh
# copy app
COPY app /srv/shiny-server/app
## allow permissions
RUN ["chmod", "+x", "/usr/bin/shiny-server.sh"]
# expose port
EXPOSE 3838
CMD ["usr/bin/shiny-server.sh"]