Container unresponsive and container did not respond in time


#1

Hello,

I have a VM (Centos 7) on which I installed Docker, then Shinyproxy with the following commands:

mkdir ShinyProxy-docker
cd ShinyProxy-docker/
git clone https://github.com/openanalytics/ShinyProxy-config-examples.git
sudo docker network create sp-example-net
cd 02-containerized-docker-engine
docker build -t shinyproxy .
sudo docker run -d -v /var/run/docker.sock:/var/run/docker.sock --net sp-example-net -p 8080:8080 mon_shinyproxy

So I have a shinyproxy container running and if I go to the IP address of my VM, on port 8080, I see shinyproxy and I can connect to it. I got the docker image “openanalytics / shinyproxy-demo” so now, I can access the “Hello Application” via Shinyproxy.

Now, I would like to install my own Shiny application, named “great”. I created an R package of this application, which works very well. To integrate with Shinyproxy, I created a “great” folder with the Hello application Dockerfile, the source of my package (tar.gz), the folder containing my R package, and the Rprofile.site file.

image1_shiny

I modified the Dockerfile as follows:

FROM rocker/r-ver:3.5.2

ENV DEBIAN_FRONTEND noninteractive

RUN apt-get update && apt-get install -y \
sudo \
gdebi-core \
pandoc \
pandoc-citeproc \
libcurl4-gnutls-dev \
libcairo2-dev \
libxt-dev \
openssl \
libxml2-dev \
libssl-dev \
tcl8.5-dev \
tk8.5-dev \
wget \
build-essential \
fort77 \
xorg-dev \
liblzma-dev libblas-dev gfortran \
gcc-multilib \
gobjc++ \
aptitude \
libreadline-dev \
libbz2-dev \
bzip2 \
xtail \
x11-common \
xserver-xorg \
default-jdk \
qpdf \
libx11-dev \
autotools-dev \
cdbs \
libauthen-sasl-perl \
libfile-basedir-perl \
libfile-desktopentry-perl \
libfile-listing-perl \
libfile-mimeinfo-perl \
libfont-afm-perl \
libhtml-form-perl \
libhtml-format-perl \
libhtml-tree-perl \
libhttp-cookies-perl \
libhttp-daemon-perl \
libhttp-negotiate-perl \
libio-socket-ssl-perl \
libipc-system-simple-perl \
libjpeg-dev \
libjpeg62-turbo-dev \
liblapack-dev \
liblapack3 \
liblwp-protocol-https-perl \
libmailtools-perl \
libncurses5-dev \
libnet-dbus-perl \
libnet-http-perl \
libnet-smtp-ssl-perl \
libnet-ssleay-perl \
libpaper-utils \
libpaper1 \
libtcl8.6 \
libtext-iconv-perl \
libtie-ixhash-perl \
libtk8.6 \
libwww-perl \
libwww-robotrules-perl \
libx11-protocol-perl \
libxml-parser-perl \
libxml-twig-perl \
libxml-xpathengine-perl \
perl-openssl-defaults \
x11-xserver-utils \
xdg-utils \
devscripts \
libdigest-hmac-perl \
libgssapi-perl \
liblapack-doc-man \
liblapack-doc \
libcrypt-ssleay-perl \
ncurses-doc \
tcl8.6 \
tk8.6 \
libauthen-ntlm-perl \
libunicode-map8-perl \
libunicode-string-perl \
xml-twig-tools \
ess \
debhelper \
nickle \
cairo-5c \
xorg-docs-core \
gvfs-bin

# install manually all the missing libraries
RUN apt-get install -y gconf-service libasound2 libatk1.0-0 libcairo2 libcups2 libfontconfig1 libgdk-pixbuf2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libxss1 libgit2-dev fonts-liberation libappindicator1 libnss3 lsb
-release xdg-utils

RUN wget https://cran.r-project.org/src/base/R-3/R-3.5.2.tar.gz  && \
tar -xvf R-3.5.2.tar.gz  && \
rm R-3.5.2.tar.gz  && \
cd R-3.5.2/  && \
./configure --with-x=yes --with-cairo=yes --with-libpng=yes --with-tcltk --with-x11 --with-tcl-config=/usr/lib/tcl8.5/tclConfig.sh --with-tk-config=/usr/lib/tk8.5/tkConfig.sh --enable-R-shlib && \
make && \
make install && \
cp bin/R /usr/local/bin/R && \
cp bin/R /usr/bin/R && \
Rscript -e "install.packages(c('XML', 'shinythemes', 'shinyjs','ggplot2','dendextend','seriation','png', 'DT', 'shinycssloaders', 'data.table','promises','tidyr','dplyr','purrr','httpuv','mime','shinyWidgets','glu
e','rlang','shinyalert'),repos='http://cran.us.r-project.org')" && \
Rscript -e "install.packages('devtools', repos='http://cran.us.r-project.org');library('devtools');devtools::install_github('rstudio/d3heatmap');devtools::install_github('talgalili/heatmaply');devtools::install_gi
thub('ropensci/plotly')" && \
Rscript -e 'install.packages("BiocManager")' && \
Rscript -e "library(BiocManager)" && \
Rscript -e "install.packages(c('shiny', 'rmarkdown'), repos='http://cran.us.r-project.org')" && \
Rscript -e "BiocManager::install(c('tkWidgets','widgetTools'))" && \
Rscript -e "BiocManager::install(c('annotate','biomaRt','rtracklayer','genefilter','geneplotter','GenomicFeatures','DESeq2'))" && \
Rscript -e "BiocManager::install(c('hexbin','Mfuzz','edgeR'))"

RUN Rscript -e "install.packages('https://gitlab.com/avelt/great/raw/master/great_0.1.0.tar.gz', repos = NULL, type = 'source')"

# set host and port
COPY Rprofile.site /usr/local/lib/R/etc/

# set host and port
COPY Rprofile.site /usr/lib/R/etc/

EXPOSE 3838

CMD ["R", "-e .libPaths(c('/usr/local/lib/R/site-library/','/R-3.5.2/library/'));great::shiny_greatshinyapp()"]

I recompile R in this Dockerfile otherwise I have problems compiling R packages and a lot of errors with gcc.

Finally, I go in this folder and I launch the following command:

docker build -t great .

In order to create the “great” docker image. All work fine.

Then, in the application.yml, I add my shiny app :

proxy:
  port: 8080
  authentication: simple
  container-wait-time: 300000
  admin-groups: admins
  users:
  - name: jack
    password: password
    groups: admins
  - name: jeff
    password: password
  docker:
      internal-networking: true
  specs:
  - id: 01_hello
    display-name: Hello Application
    description: Application which demonstrates the basics of a Shiny app
    container-cmd: ["R", "-e", "shinyproxy::run_01_hello()"]
    container-image: openanalytics/shinyproxy-demo
    container-network: sp-example-net
  - id: 06_tabsets
    container-cmd: ["R", "-e", "shinyproxy::run_06_tabsets()"]
    container-image: openanalytics/shinyproxy-demo
    container-network: sp-example-net
  - id: great
    container-cmd: ["R", "-e", "great::shiny_greatshinyapp()"]
    container-image: avelt/great
    container-network: sp-example-net

logging:
  file:
    shinyproxy.log

But, when I click on me shiny app, the log of shinyproxy is :

2019-04-24 13:35:42.509  INFO 14682 --- [  XNIO-2 task-9] c.s.docker.client.DefaultDockerClient    : Starting container with Id: a2d0a2368ab3a0c3591a5029bc46055fe4ea314411c0df5df35489cf537f685b
2019-04-24 13:35:45.282  WARN 14682 --- [  XNIO-2 task-9] e.o.shinyproxy.ShinyProxyTestStrategy    : Container unresponsive, trying again (2/150): http://a2d0a2368ab3:3838
2019-04-24 13:35:47.283  WARN 14682 --- [  XNIO-2 task-9] e.o.shinyproxy.ShinyProxyTestStrategy    : Container unresponsive, trying again (3/150): http://a2d0a2368ab3:3838
2019-04-24 13:35:49.284  WARN 14682 --- [  XNIO-2 task-9] e.o.shinyproxy.ShinyProxyTestStrategy    : Container unresponsive, trying again (4/150): http://a2d0a2368ab3:3838
2019-04-24 13:35:51.284  WARN 14682 --- [  XNIO-2 task-9] e.o.shinyproxy.ShinyProxyTestStrategy    : Container unresponsive, trying again (5/150): http://a2d0a2368ab3:3838
2019-04-24 13:35:53.287  WARN 14682 --- [  XNIO-2 task-9] e.o.shinyproxy.ShinyProxyTestStrategy    : Container unresponsive, trying again (6/150): http://a2d0a2368ab3:3838
2019-04-24 13:35:55.288  WARN 14682 --- [  XNIO-2 task-9] e.o.shinyproxy.ShinyProxyTestStrategy    : Container unresponsive, trying again (7/150): http://a2d0a2368ab3:3838
...

And then, my web page print :

**Status code:** 500

**Message:** Container did not respond in time

**Stack Trace:**
eu.openanalytics.containerproxy.ContainerProxyException: Container did not respond in time
at eu.openanalytics.containerproxy.backend.AbstractContainerBackend.startProxy(AbstractContainerBackend.java:115)
at eu.openanalytics.containerproxy.service.ProxyService.startProxy(ProxyService.java:213)
at eu.openanalytics.shinyproxy.controllers.AppController.getOrStart(AppController.java:100)

But I have no specific error, so I don’t understand … Have you an idea about that ? The two applications of openanalytics/shinyproxy-demo work fine, but not mine.

Thank you.
Best,
Amandine


#2

Could it be that you just misspelled the image name?
Otherwise, you can try to run the application from the docker image manually (as described in https://www.shinyproxy.io/troubleshooting/) to see if it helps pinpoint the problem.


#3

There is no problem with the name, I build the application as great and then I push this image on dockerhub as avelt/great and I have the avelt/great image in my docker.

When I launch the following command :

sudo docker run -p 3838:3838 avelt/great R -e “.libPaths(c(’/usr/local/lib/R/site-library/’,’/R-3.5.2/library/’));great::shiny_greatshinyapp()”

I have :

R version 3.5.2 (2018-12-20) -- "Eggshell Igloo"
Copyright (C) 2018 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

  Natural language support but running in an English locale

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

> .libPaths(c('/usr/local/lib/R/site-library/','/R-3.5.2/library/'));great::shiny_greatshinyapp()
Loading required package: shiny

Listening on http://127.0.0.1:7221

And I don’t get an error, I do’nt have the hand because the application runs on http://127.0.0.1:7221.
But I can’t access my application. If put the ip of my VM with the port that gives me R (7221), I can’t access it. How to access it manually to see if the application works outside shinyproxy?

I have :

http://138.***.*.:7221/
image2

Best,
Amandine


#4

Thank you for your help @mnazarov.

I see an error in my container command in application.yml :

- id: great
    container-cmd: ["R", "-e", "great::shiny_greatshinyapp()"]
    container-image: avelt/great
    container-network: sp-example-net

The good lines are :

- id: great
container-cmd: ["R", "-e", ".libPaths(c('/usr/local/lib/R/site-library/','/R- 
3.5.2/library/'));great::shiny_greatshinyapp()"]
container-image: avelt/great
container-network: sp-example-net

But that change nothing, I have the warning :

2019-04-25 09:12:42.063  WARN 9522 --- [  XNIO-2 task-6] e.o.shinyproxy.ShinyProxyTestStrategy    
: Container unresponsive, trying again (43/150): http://9e07c3c66e10:3838
2019-04-25 09:12:44.064  WARN 9522 --- [  XNIO-2 task-6] e.o.shinyproxy.ShinyProxyTestStrategy    
: Container unresponsive, trying again (44/150): http://9e07c3c66e10:3838
2019-04-25 09:12:46.065  WARN 9522 --- [  XNIO-2 task-6] e.o.shinyproxy.ShinyProxyTestStrategy    
: Container unresponsive, trying again (45/150): http://9e07c3c66e10:3838
2019-04-25 09:12:48.333  WARN 9522 --- [  XNIO-2 task-6] e.o.shinyproxy.ShinyProxyTestStrategy    
   : Container unresponsive, trying again (46/150): http://9e07c3c66e10:3838
2019-04-25 09:12:50.333  WARN 9522 --- [  XNIO-2 task-6] e.o.shinyproxy.ShinyProxyTestStrategy    
: Container unresponsive, trying again (47/150): http://9e07c3c66e10:3838
2019-04-25 09:12:52.334  WARN 9522 --- [  XNIO-2 task-6] e.o.shinyproxy.ShinyProxyTestStrategy    

So, I didn’t have any error with the wrong command, nor with the good command … Just warnings that my container does not respond. Do you know where it can come from? How to test my Shiny application outside Shinyproxy? I do not know which link I can access when I launch a container of my application. And so I do not know how to visualize the problem.

PS : Here are all the log in my web page :

# Error

**Status code:**  500

**Message:**  Container did not respond in time

**Stack Trace:**  
eu.openanalytics.containerproxy.ContainerProxyException: Container did not respond in time
at eu.openanalytics.containerproxy.backend.AbstractContainerBackend.startProxy(AbstractContainerBackend.java:115)
at eu.openanalytics.containerproxy.service.ProxyService.startProxy(ProxyService.java:213)
at eu.openanalytics.shinyproxy.controllers.AppController.getOrStart(AppController.java:100)
at eu.openanalytics.shinyproxy.controllers.AppController.startApp(AppController.java:68)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:870)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:776)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:881)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:855)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:158)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:66)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:64)
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
at io.undertow.server.handlers.PathHandler.handleRequest(PathHandler.java:94)
at eu.openanalytics.containerproxy.util.ProxyMappingManager$ProxyPathHandler.handleRequest(ProxyMappingManager.java:159)
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)
at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:336)
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

#5

Sorry for all the posts, but I test a lot … I tried to install euler app, in order to see if I have the same problem than with my app. But I have an error when building the docker image.

I downloaded all the files from git repo : https://github.com/openanalytics/shinyproxy-template

Then I launched the following command :

sudo docker build -t openanalytics/shinyproxy-template .

And I got :

* installing *source* package ‘Rcpp’ ...
** package ‘Rcpp’ successfully unpacked and MD5 sums checked
** libs
g++  -I"/usr/share/R/include" -DNDEBUG -I../inst/include/     -fpic  -g -O2 -fdebug-prefix-map=/build/r-base-i39faS/r-base-3.5.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g  -c Date.cpp -o Date.o
In file included from ../inst/include/Rcpp/platform/compiler.h:100:0,
                 from ../inst/include/Rcpp/r/headers.h:59,
                 from ../inst/include/RcppCommon.h:29,
                 from ../inst/include/Rcpp.h:27,
                 from Date.cpp:31:
/usr/include/c++/7/cmath:41:10: fatal error: bits/c++config.h: No such file or directory
 #include <bits/c++config.h>
          ^~~~~~~~~~~~~~~~~~
compilation terminated.
/usr/lib/R/etc/Makeconf:171: recipe for target 'Date.o' failed
make: *** [Date.o] Error 1
ERROR: compilation failed for package ‘Rcpp’
* removing ‘/usr/local/lib/R/site-library/Rcpp’

This is not the first time I have a problem with the Rcpp package and Docker, there seems to be a problem with the installed gcc?


#6

From this it seems that your Rprofile.site file is not loaded (otherwise the host should be 0.0.0.0 and the port should be 3838, assuming this is what you’ve specified in the file).
I think this is because with the manual installation your R_HOME is not /usr/lib/R.
You can fix that, or alternatively pass the host = '0.0.0.0' and port = 3838 arguments to the runApp function.


#7

Thank you a lot @mnazarov, it works :slight_smile:
It was a problem of host/port option, thank you.

Just a last question, my navigation bar is hidden by the shinyproxy bar, do you know how to avoid that?

Capture


#8

This problem comes from Google Chrome. When i open shinyproxy with google chrome, the bars overlap and i can not select my filters etc. In Firefox, it works. On the other hand, when I launch my analysis, I receive the message:

Error : unable to start device PNG

Have you an idea about this problem ?

Also, I have a problem for multiple users. If I connect as avelt and my colleague connect with an other account, my page become grayed out … As if the container restarted for my colleague but suddenly I could not do anything on my side. It seems to me that for each user, a different container is supposed to start?

Here is my application.yml :

proxy:
  port: 80
  authentication: simple
  container-wait-time: 30000
  admin-groups: admins
  users:
  - name: colleague
    password: colleaguepassword
  - name: avelt
    password: aveltadpassword
    groups: admins
  docker:
      internal-networking: true
  specs:
  - id: GREAT
    container-cmd: ["R", "-e", ".libPaths(c('/usr/local/lib/R/site-library/','/R-3.5.2/library/'));great::shiny_greatshinyapp()"]
    container-image: avelt/great
    container-network: sp-example-net

logging:
  file:
    shinyproxy.log

Do you have an idea of ​​the problem?

Thank you a lot for your help,
Amandine


#9

This is indeed Chrome’s issue, please see https://github.com/openanalytics/shinyproxy/issues/139

I don’t think this is something related to shinyproxy, there could be some system libraries missing in your docker image though, or could be some R/packages (mis-)configuration, please see relevant links from google search on this error message.

Indeed for each user a separate container is supposed to start. Maybe you can look at the logs, and ‘admin panel’ to see what is happening in your case.


#10

Thank you. I work with a shinyproxy container, not with the jar file directly. So, I don’t have the log that appears directly in my window. But in application.yml, I specified “shinyproxy.log” as log file. Where can I find this file?

Best,
Amandine

Ps :I connected with colleague’s account on internet explorer, it works fine. Then, I connected with my account on firefox, it works fine too. But the window of my colleague’s account is grayed out … Here is the information from admin panel :

Capture


#11

Normally in the same directory as the application.yml file. Note that you can also specify absolute path there to be sure to know where it is.


#12

Thank you, I created a logs folder in my container and link this folder with a folder on my server.

So, I can see this log when I connect first with avelt account on firefox, then with larenault account on internet explorer. When I connect with larenault, the screen for avelt is grayed out.

Here is the shinyproxy.log :

2019-04-26 08:26:52.337  INFO 1 --- [main] e.o.c.ContainerProxyApplication          : Starting ContainerProxyApplication v0.8.1 on 7ed788c2040a with PID 1 (/opt/shinyproxy/shinyproxy.jar started by root in /opt/sh
inyproxy)
2019-04-26 08:26:52.344  INFO 1 --- [main] e.o.c.ContainerProxyApplication          : No active profile set, falling back to default profiles: default
2019-04-26 08:26:52.437  INFO 1 --- [main] ConfigServletWebServerApplicationContext : Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@614c5515: startup da
te [Fri Apr 26 08:26:52 UTC 2019]; root of context hierarchy
2019-04-26 08:26:53.744  INFO 1 --- [main] f.a.AutowiredAnnotationBeanPostProcessor : JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
2019-04-26 08:26:55.045  INFO 1 --- [main] org.xnio                                 : XNIO version 3.3.8.Final
2019-04-26 08:26:55.058  INFO 1 --- [main] org.xnio.nio                             : XNIO NIO Implementation Version 3.3.8.Final
2019-04-26 08:26:55.176  WARN 1 --- [main] io.undertow.websockets.jsr               : UT026009: XNIO worker was not set on WebSocketDeploymentInfo, the default worker will be used
2019-04-26 08:26:55.176  WARN 1 --- [main] io.undertow.websockets.jsr               : UT026010: Buffer pool was not set on WebSocketDeploymentInfo, the default pool will be used
2019-04-26 08:26:55.202  INFO 1 --- [main] io.undertow.servlet                      : Initializing Spring embedded WebApplicationContext
2019-04-26 08:26:55.202  INFO 1 --- [main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 2765 ms
2019-04-26 08:26:55.419  INFO 1 --- [main] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'characterEncodingFilter' to: [/*]
2019-04-26 08:26:55.420  INFO 1 --- [main] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'requestContextFilter' to: [/*]
2019-04-26 08:26:55.420  INFO 1 --- [main] .s.DelegatingFilterProxyRegistrationBean : Mapping filter: 'springSecurityFilterChain' to: [/*]
2019-04-26 08:26:55.420  INFO 1 --- [main] o.s.boot.web.servlet.RegistrationBean    : Filter orderedHiddenHttpMethodFilter was not registered (disabled)
2019-04-26 08:26:55.420  INFO 1 --- [main] o.s.boot.web.servlet.RegistrationBean    : Filter orderedHttpPutFormContentFilter was not registered (disabled)
2019-04-26 08:26:55.421  INFO 1 --- [main] o.s.b.w.servlet.ServletRegistrationBean  : Servlet dispatcherServlet mapped to [/]
2019-04-26 08:26:55.782  INFO 1 --- [main] e.o.c.stat.StatCollectorRegistry         : Disabled. Usage statistics will not be processed.
2019-04-26 08:26:55.948  INFO 1 --- [main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: Ant [pattern='/css/**'], []
2019-04-26 08:26:55.948  INFO 1 --- [main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: Ant [pattern='/img/**'], []
2019-04-26 08:26:55.948  INFO 1 --- [main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: Ant [pattern='/js/**'], []
2019-04-26 08:26:55.948  INFO 1 --- [main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: Ant [pattern='/assets/**'], []
2019-04-26 08:26:55.948  INFO 1 --- [main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: Ant [pattern='/webjars/**'], []
2019-04-26 08:26:56.042  INFO 1 --- [main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: org.springframework.security.web.util.matcher.AnyRequestMatcher@1, [org.springframework.security.web.con
text.request.async.WebAsyncManagerIntegrationFilter@3527942a, org.springframework.security.web.context.SecurityContextPersistenceFilter@54a7079e, org.springframework.security.web.header.HeaderWriterFilter@51e69659
, org.springframework.security.web.authentication.logout.LogoutFilter@2dc54ad4, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@73e9cf30, org.springframework.security.web.authe
ntication.www.BasicAuthenticationFilter@942a29c, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@47d9a273, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@
1b11171f, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@1ed6388a, org.springframework.security.web.session.SessionManagementFilter@201a4587, org.springframework.security.web.access.
ExceptionTranslationFilter@71a8adcf, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@54e1c68b]
2019-04-26 08:26:56.065  WARN 1 --- [main] org.thymeleaf.templatemode.TemplateMode  : [THYMELEAF][main] Template Mode 'HTML5' is deprecated. Using Template Mode 'HTML' instead.
2019-04-26 08:26:56.457  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@
614c5515: startup date [Fri Apr 26 08:26:52 UTC 2019]; root of context hierarchy
2019-04-26 08:26:56.532  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/]}" onto private java.lang.Object eu.openanalytics.shinyproxy.controllers.IndexController.index(org.springframework.
ui.ModelMap,javax.servlet.http.HttpServletRequest)
2019-04-26 08:26:56.533  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/issue],methods=[POST]}" onto public java.lang.String eu.openanalytics.shinyproxy.controllers.IssueController.postIss
ue(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2019-04-26 08:26:56.534  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/app/*],methods=[GET]}" onto public java.lang.String eu.openanalytics.shinyproxy.controllers.AppController.app(org.sp
ringframework.ui.ModelMap,javax.servlet.http.HttpServletRequest)
2019-04-26 08:26:56.535  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/app_direct/**]}" onto public void eu.openanalytics.shinyproxy.controllers.AppController.appDirect(javax.servlet.http
.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2019-04-26 08:26:56.535  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/app/*],methods=[POST]}" onto public java.util.Map<java.lang.String, java.lang.String> eu.openanalytics.shinyproxy.co
ntrollers.AppController.startApp(javax.servlet.http.HttpServletRequest)
2019-04-26 08:26:56.536  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/admin]}" onto private java.lang.String eu.openanalytics.shinyproxy.controllers.AdminController.admin(org.springframe
work.ui.ModelMap,javax.servlet.http.HttpServletRequest)
2019-04-26 08:26:56.537  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/proxy/{proxyId}],methods=[GET],produces=[application/json]}" onto public org.springframework.http.ResponseEntity
<eu.openanalytics.containerproxy.model.runtime.Proxy> eu.openanalytics.containerproxy.api.ProxyController.getProxy(java.lang.String)
2019-04-26 08:26:56.538  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/proxyspec/{proxySpecId}],methods=[GET],produces=[application/json]}" onto public org.springframework.http.Respon
seEntity<eu.openanalytics.containerproxy.model.spec.ProxySpec> eu.openanalytics.containerproxy.api.ProxyController.getProxySpec(java.lang.String)
2019-04-26 08:26:56.538  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/proxy/{proxySpecId}],methods=[POST],produces=[application/json]}" onto public org.springframework.http.ResponseE
ntity<eu.openanalytics.containerproxy.model.runtime.Proxy> eu.openanalytics.containerproxy.api.ProxyController.startProxy(java.lang.String,java.util.Set<eu.openanalytics.containerproxy.model.runtime.RuntimeSetting
>)
2019-04-26 08:26:56.539  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/proxy],methods=[POST],produces=[application/json]}" onto public org.springframework.http.ResponseEntity<eu.opena
nalytics.containerproxy.model.runtime.Proxy> eu.openanalytics.containerproxy.api.ProxyController.startProxy(eu.openanalytics.containerproxy.model.spec.ProxySpec)
2019-04-26 08:26:56.539  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/proxyspec],methods=[GET],produces=[application/json]}" onto public java.util.List<eu.openanalytics.containerprox
y.model.spec.ProxySpec> eu.openanalytics.containerproxy.api.ProxyController.listProxySpecs()
2019-04-26 08:26:56.539  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/proxy],methods=[GET],produces=[application/json]}" onto public java.util.List<eu.openanalytics.containerproxy.mo
del.runtime.Proxy> eu.openanalytics.containerproxy.api.ProxyController.listProxies()
2019-04-26 08:26:56.540  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/proxy/{proxyId}],methods=[DELETE],produces=[application/json]}" onto public org.springframework.http.ResponseEnt
ity<java.lang.String> eu.openanalytics.containerproxy.api.ProxyController.stopProxy(java.lang.String)
2019-04-26 08:26:56.540  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/route/**]}" onto public void eu.openanalytics.containerproxy.api.ProxyRouteController.route(javax.servlet.http.H
ttpServletRequest,javax.servlet.http.HttpServletResponse)
2019-04-26 08:26:56.543  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public java.lang.String eu.openanalytics.containerproxy.ui.ErrorController.handle
Error(org.springframework.ui.ModelMap,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2019-04-26 08:26:56.544  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],consumes=[application/json],produces=[application/json]}" onto public org.springframework.http.ResponseEntity
<java.util.Map<java.lang.String, java.lang.Object>> eu.openanalytics.containerproxy.ui.ErrorController.error(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2019-04-26 08:26:56.544  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/login],methods=[GET]}" onto public java.lang.Object eu.openanalytics.containerproxy.ui.LoginController.getLoginPage(
java.util.Optional<java.lang.String>,org.springframework.ui.ModelMap,javax.servlet.http.HttpServletRequest)
2019-04-26 08:26:56.588  INFO 1 --- [main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/assets/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2019-04-26 08:26:56.589  INFO 1 --- [main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2019-04-26 08:26:56.589  INFO 1 --- [main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2019-04-26 08:26:56.605  INFO 1 --- [main] .m.m.a.ExceptionHandlerExceptionResolver : Detected @ExceptionHandler methods in baseController.RestErrorHandler
2019-04-26 08:26:56.633  INFO 1 --- [main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandl
er]
2019-04-26 08:26:56.742  INFO 1 --- [main] o.s.b.a.w.s.WelcomePageHandlerMapping    : Adding welcome page template: index
2019-04-26 08:26:56.845  INFO 1 --- [main] o.s.l.c.support.AbstractContextSource    : Property 'userDn' not set - anonymous context will be used for read-write operations
2019-04-26 08:26:57.035  INFO 1 --- [main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2019-04-26 08:26:57.036  INFO 1 --- [main] o.s.j.e.a.AnnotationMBeanExporter        : Bean with name 'dataSource' has been autodetected for JMX exposure
2019-04-26 08:26:57.041  INFO 1 --- [main] o.s.j.e.a.AnnotationMBeanExporter        : Located MBean 'dataSource': registering with JMX server as MBean [com.zaxxer.hikari:name=dataSource,type=HikariDataSource]
2019-04-26 08:26:57.113  INFO 1 --- [main] o.s.b.w.e.u.UndertowServletWebServer     : Undertow started on port(s) 80 (http) with context path ''
2019-04-26 08:26:57.115  INFO 1 --- [main] e.o.c.ContainerProxyApplication          : Started ContainerProxyApplication in 5.583 seconds (JVM running for 7.109)
2019-04-26 08:26:57.943  INFO 1 --- [XNIO-2 task-1] io.undertow.servlet                      : Initializing Spring FrameworkServlet 'dispatcherServlet'
2019-04-26 08:26:57.943  INFO 1 --- [XNIO-2 task-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization started
2019-04-26 08:26:57.960  INFO 1 --- [XNIO-2 task-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization completed in 17 ms
2019-04-26 08:27:03.571  INFO 1 --- [XNIO-2 task-3] e.o.containerproxy.service.UserService   : User logged in [user: avelt]
2019-04-26 08:27:03.572  INFO 1 --- [XNIO-2 task-3] e.o.containerproxy.service.UserService   : User logged in [user: avelt]
2019-04-26 08:27:07.541  INFO 1 --- [XNIO-2 task-7] c.s.docker.client.DefaultDockerClient    : Starting container with Id: 51f28bd37cb6de0f288805ad7b89a80514795ba4d65fca8870a2801021bd188b
2019-04-26 08:27:13.543  INFO 1 --- [XNIO-2 task-7] e.o.containerproxy.service.ProxyService  : Proxy activated [user: avelt] [spec: GREAT] [id: d03d9a75-90da-4a3a-9209-04a5c00f4d0c]
2019-04-26 08:27:28.910  INFO 1 --- [XNIO-2 task-7] e.o.containerproxy.service.UserService   : User logged in [user: larenault]
2019-04-26 08:27:28.910  INFO 1 --- [XNIO-2 task-7] e.o.containerproxy.service.UserService   : User logged in [user: larenault]
2019-04-26 08:27:31.207  INFO 1 --- [XNIO-2 task-10] c.s.docker.client.DefaultDockerClient    : Starting container with Id: e245431f1b4c074a6afcccefc0035dd1051daae6d0c6c3458c82224bbbede988
2019-04-26 08:27:36.574  INFO 1 --- [XNIO-2 task-10] e.o.containerproxy.service.ProxyService  : Proxy activated [user: larenault] [spec: GREAT] [id: 8c4ac299-3fed-4908-a8bd-c6dcbfcd6548]
2019-04-26 08:29:14.886  INFO 1 --- [InactiveProxyKiller] e.o.c.service.HeartbeatService           : Releasing inactive proxy [user: avelt] [spec: GREAT] [id: d03d9a75-90da-4a3a-9209-04a5c00f4d0c] [silence: 65859m
s]
2019-04-26 08:29:16.398  INFO 1 --- [pool-2-thread-1] e.o.containerproxy.service.ProxyService  : Proxy released [user: avelt] [spec: GREAT] [id: d03d9a75-90da-4a3a-9209-04a5c00f4d0c]

And when I do a “docker container ls” I see the follwing output :

error1

Can the problem be that both containers are running on port 3838 of the server?

Or maybe I have to change the heartbeat option … ?

2019-04-26 08:29:14.886  INFO 1 --- [InactiveProxyKiller] e.o.c.service.HeartbeatService           : Releasing inactive proxy [user: avelt] [spec: GREAT] [id: d03d9a75-90da-4a3a-9209-04a5c00f4d0c] [silence: 65859m
s]

I will test that

Edit : I put heartbeat-timeout to 1800000 ms (30 minutes). But I got same problem of grayed screen for one user (but I don’t have the InactiveProxyKiller anymore, in the log).

When the second user logs in, the first user has the screen grayed and when first user click on the analyzes they do not launch anymore. While the second user can use the application without problem, run the analyzes etc … As if the second connection killed the first. When I do docker container ls, the first container is actually killed some time after the second connection, I do not see it anymore.

Here is the complete log :

 2019-04-26 08:52:18.437  INFO 1 --- [main] e.o.c.ContainerProxyApplication          : Starting ContainerProxyApplication v0.8.1 on b672c46f9f30 with PID 1 (/opt/shinyproxy/shinyproxy.jar started by root in /opt/sh
inyproxy)
2019-04-26 08:52:18.440  INFO 1 --- [main] e.o.c.ContainerProxyApplication          : No active profile set, falling back to default profiles: default
2019-04-26 08:52:18.500  INFO 1 --- [main] ConfigServletWebServerApplicationContext : Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@614c5515: startup da
te [Fri Apr 26 08:52:18 UTC 2019]; root of context hierarchy
2019-04-26 08:52:19.715  INFO 1 --- [main] f.a.AutowiredAnnotationBeanPostProcessor : JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
2019-04-26 08:52:20.755  INFO 1 --- [main] org.xnio                                 : XNIO version 3.3.8.Final
2019-04-26 08:52:20.770  INFO 1 --- [main] org.xnio.nio                             : XNIO NIO Implementation Version 3.3.8.Final
2019-04-26 08:52:20.876  WARN 1 --- [main] io.undertow.websockets.jsr               : UT026009: XNIO worker was not set on WebSocketDeploymentInfo, the default worker will be used
2019-04-26 08:52:20.877  WARN 1 --- [main] io.undertow.websockets.jsr               : UT026010: Buffer pool was not set on WebSocketDeploymentInfo, the default pool will be used
2019-04-26 08:52:20.903  INFO 1 --- [main] io.undertow.servlet                      : Initializing Spring embedded WebApplicationContext
2019-04-26 08:52:20.903  INFO 1 --- [main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 2404 ms
2019-04-26 08:52:21.155  INFO 1 --- [main] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'characterEncodingFilter' to: [/*]
2019-04-26 08:52:21.156  INFO 1 --- [main] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'requestContextFilter' to: [/*]
2019-04-26 08:52:21.156  INFO 1 --- [main] .s.DelegatingFilterProxyRegistrationBean : Mapping filter: 'springSecurityFilterChain' to: [/*]
2019-04-26 08:52:21.156  INFO 1 --- [main] o.s.boot.web.servlet.RegistrationBean    : Filter orderedHiddenHttpMethodFilter was not registered (disabled)
2019-04-26 08:52:21.156  INFO 1 --- [main] o.s.boot.web.servlet.RegistrationBean    : Filter orderedHttpPutFormContentFilter was not registered (disabled)
2019-04-26 08:52:21.157  INFO 1 --- [main] o.s.b.w.servlet.ServletRegistrationBean  : Servlet dispatcherServlet mapped to [/]
2019-04-26 08:52:21.483  INFO 1 --- [main] e.o.c.stat.StatCollectorRegistry         : Disabled. Usage statistics will not be processed.
2019-04-26 08:52:21.664  INFO 1 --- [main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: Ant [pattern='/css/**'], []
2019-04-26 08:52:21.664  INFO 1 --- [main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: Ant [pattern='/img/**'], []
2019-04-26 08:52:21.664  INFO 1 --- [main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: Ant [pattern='/js/**'], []
2019-04-26 08:52:21.664  INFO 1 --- [main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: Ant [pattern='/assets/**'], []
2019-04-26 08:52:21.664  INFO 1 --- [main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: Ant [pattern='/webjars/**'], []
2019-04-26 08:52:21.754  INFO 1 --- [main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: org.springframework.security.web.util.matcher.AnyRequestMatcher@1, [org.springframework.security.web.con
text.request.async.WebAsyncManagerIntegrationFilter@3527942a, org.springframework.security.web.context.SecurityContextPersistenceFilter@54a7079e, org.springframework.security.web.header.HeaderWriterFilter@51e69659
, org.springframework.security.web.authentication.logout.LogoutFilter@2dc54ad4, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@73e9cf30, org.springframework.security.web.authe
ntication.www.BasicAuthenticationFilter@942a29c, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@47d9a273, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@
1b11171f, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@1ed6388a, org.springframework.security.web.session.SessionManagementFilter@201a4587, org.springframework.security.web.access.
ExceptionTranslationFilter@71a8adcf, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@54e1c68b]
2019-04-26 08:52:21.780  WARN 1 --- [main] org.thymeleaf.templatemode.TemplateMode  : [THYMELEAF][main] Template Mode 'HTML5' is deprecated. Using Template Mode 'HTML' instead.
2019-04-26 08:52:22.138  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@
614c5515: startup date [Fri Apr 26 08:52:18 UTC 2019]; root of context hierarchy
2019-04-26 08:52:22.216  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/]}" onto private java.lang.Object eu.openanalytics.shinyproxy.controllers.IndexController.index(org.springframework.
ui.ModelMap,javax.servlet.http.HttpServletRequest)
2019-04-26 08:52:22.217  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/issue],methods=[POST]}" onto public java.lang.String eu.openanalytics.shinyproxy.controllers.IssueController.postIss
ue(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2019-04-26 08:52:22.218  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/app/*],methods=[GET]}" onto public java.lang.String eu.openanalytics.shinyproxy.controllers.AppController.app(org.sp
ringframework.ui.ModelMap,javax.servlet.http.HttpServletRequest)
2019-04-26 08:52:22.218  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/app_direct/**]}" onto public void eu.openanalytics.shinyproxy.controllers.AppController.appDirect(javax.servlet.http
.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2019-04-26 08:52:22.219  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/app/*],methods=[POST]}" onto public java.util.Map<java.lang.String, java.lang.String> eu.openanalytics.shinyproxy.co
ntrollers.AppController.startApp(javax.servlet.http.HttpServletRequest)
2019-04-26 08:52:22.219  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/admin]}" onto private java.lang.String eu.openanalytics.shinyproxy.controllers.AdminController.admin(org.springframe
work.ui.ModelMap,javax.servlet.http.HttpServletRequest)
2019-04-26 08:52:22.222  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/proxy/{proxyId}],methods=[GET],produces=[application/json]}" onto public org.springframework.http.ResponseEntity
<eu.openanalytics.containerproxy.model.runtime.Proxy> eu.openanalytics.containerproxy.api.ProxyController.getProxy(java.lang.String)
2019-04-26 08:52:22.222  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/proxyspec/{proxySpecId}],methods=[GET],produces=[application/json]}" onto public org.springframework.http.Respon
seEntity<eu.openanalytics.containerproxy.model.spec.ProxySpec> eu.openanalytics.containerproxy.api.ProxyController.getProxySpec(java.lang.String)
2019-04-26 08:52:22.223  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/proxy/{proxySpecId}],methods=[POST],produces=[application/json]}" onto public org.springframework.http.ResponseE
ntity<eu.openanalytics.containerproxy.model.runtime.Proxy> eu.openanalytics.containerproxy.api.ProxyController.startProxy(java.lang.String,java.util.Set<eu.openanalytics.containerproxy.model.runtime.RuntimeSetting
>)
2019-04-26 08:52:22.223  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/proxy],methods=[POST],produces=[application/json]}" onto public org.springframework.http.ResponseEntity<eu.opena
nalytics.containerproxy.model.runtime.Proxy> eu.openanalytics.containerproxy.api.ProxyController.startProxy(eu.openanalytics.containerproxy.model.spec.ProxySpec)
2019-04-26 08:52:22.223  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/proxyspec],methods=[GET],produces=[application/json]}" onto public java.util.List<eu.openanalytics.containerprox
y.model.spec.ProxySpec> eu.openanalytics.containerproxy.api.ProxyController.listProxySpecs()
2019-04-26 08:52:22.224  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/proxy],methods=[GET],produces=[application/json]}" onto public java.util.List<eu.openanalytics.containerproxy.mo
del.runtime.Proxy> eu.openanalytics.containerproxy.api.ProxyController.listProxies()
2019-04-26 08:52:22.224  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/proxy/{proxyId}],methods=[DELETE],produces=[application/json]}" onto public org.springframework.http.ResponseEnt
ity<java.lang.String> eu.openanalytics.containerproxy.api.ProxyController.stopProxy(java.lang.String)
2019-04-26 08:52:22.225  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/route/**]}" onto public void eu.openanalytics.containerproxy.api.ProxyRouteController.route(javax.servlet.http.H
ttpServletRequest,javax.servlet.http.HttpServletResponse)
2019-04-26 08:52:22.228  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public java.lang.String eu.openanalytics.containerproxy.ui.ErrorController.handle
Error(org.springframework.ui.ModelMap,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2019-04-26 08:52:22.228  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],consumes=[application/json],produces=[application/json]}" onto public org.springframework.http.ResponseEntity
<java.util.Map<java.lang.String, java.lang.Object>> eu.openanalytics.containerproxy.ui.ErrorController.error(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2019-04-26 08:52:22.231  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/login],methods=[GET]}" onto public java.lang.Object eu.openanalytics.containerproxy.ui.LoginController.getLoginPage(
java.util.Optional<java.lang.String>,org.springframework.ui.ModelMap,javax.servlet.http.HttpServletRequest)
2019-04-26 08:52:22.281  INFO 1 --- [main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/assets/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2019-04-26 08:52:22.281  INFO 1 --- [main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2019-04-26 08:52:22.281  INFO 1 --- [main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2019-04-26 08:52:22.298  INFO 1 --- [main] .m.m.a.ExceptionHandlerExceptionResolver : Detected @ExceptionHandler methods in baseController.RestErrorHandler
2019-04-26 08:52:22.332  INFO 1 --- [main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandl
er]
2019-04-26 08:52:22.433  INFO 1 --- [main] o.s.b.a.w.s.WelcomePageHandlerMapping    : Adding welcome page template: index
2019-04-26 08:52:22.513  INFO 1 --- [main] o.s.l.c.support.AbstractContextSource    : Property 'userDn' not set - anonymous context will be used for read-write operations
2019-04-26 08:52:22.708  INFO 1 --- [main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2019-04-26 08:52:22.713  INFO 1 --- [main] o.s.j.e.a.AnnotationMBeanExporter        : Bean with name 'dataSource' has been autodetected for JMX exposure
2019-04-26 08:52:22.720  INFO 1 --- [main] o.s.j.e.a.AnnotationMBeanExporter        : Located MBean 'dataSource': registering with JMX server as MBean [com.zaxxer.hikari:name=dataSource,type=HikariDataSource]
2019-04-26 08:52:22.792  INFO 1 --- [main] o.s.b.w.e.u.UndertowServletWebServer     : Undertow started on port(s) 80 (http) with context path ''
2019-04-26 08:52:22.795  INFO 1 --- [main] e.o.c.ContainerProxyApplication          : Started ContainerProxyApplication in 5.184 seconds (JVM running for 6.02)
2019-04-26 08:52:22.927  INFO 1 --- [XNIO-2 task-1] io.undertow.servlet                      : Initializing Spring FrameworkServlet 'dispatcherServlet'
2019-04-26 08:52:22.930  INFO 1 --- [XNIO-2 task-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization started
2019-04-26 08:52:22.947  INFO 1 --- [XNIO-2 task-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization completed in 16 ms
2019-04-26 08:52:28.194  INFO 1 --- [XNIO-2 task-3] e.o.containerproxy.service.UserService   : User logged in [user: avelt]
2019-04-26 08:52:28.196  INFO 1 --- [XNIO-2 task-3] e.o.containerproxy.service.UserService   : User logged in [user: avelt]
2019-04-26 08:52:32.180  INFO 1 --- [XNIO-2 task-6] c.s.docker.client.DefaultDockerClient    : Starting container with Id: 5329d8df325664083db1c3ea025df1d69d3e36e3071fae7b7ca491fcdfdc6483
2019-04-26 08:52:38.533  INFO 1 --- [XNIO-2 task-6] e.o.containerproxy.service.ProxyService  : Proxy activated [user: avelt] [spec: GREAT] [id: 0256f139-d29b-4aef-baa1-72473af849fa]
2019-04-26 08:52:57.004  INFO 1 --- [XNIO-2 task-10] e.o.containerproxy.service.UserService   : User logged in [user: larenault]
2019-04-26 08:52:57.005  INFO 1 --- [XNIO-2 task-10] e.o.containerproxy.service.UserService   : User logged in [user: larenault]
2019-04-26 08:52:59.846  INFO 1 --- [XNIO-2 task-11] c.s.docker.client.DefaultDockerClient    : Starting container with Id: f9c27524a3bd5e089a5e2e8cd5a00a7d033d5de1396a872abf8e01c73fcc4c1d
2019-04-26 08:53:05.295  INFO 1 --- [XNIO-2 task-11] e.o.containerproxy.service.ProxyService  : Proxy activated [user: larenault] [spec: GREAT] [id: b25f2020-e874-4f2d-b310-65943ffc7b93]

#13

Yes, indeed, this is the problem (this can also be seen in the screenshot from the admin panel).
From https://www.shinyproxy.io/configuration/#docker:

when internal-networking is true , no ports will be allocated per proxy and the port range settings are ignored


#16

Ok, I create the following application.yml file, with the configuration you send me :

proxy:
  port: 80
  authentication: simple
  container-wait-time: 1800000
  heartbeat-timeout: 1800000
  template-path: ./templates/1col
  admin-groups: admins
  users:
  - name: larenault
    password: larenaultadmin
  - name: avelt
    password: aveltadmin
    groups: admins
  docker:
    cert-path: /home/none
    url: http://localhost:2375
    port-range-start: 20000
  specs:
  - id: GREAT
    container-cmd: ["R", "-e", ".libPaths(c('/usr/local/lib/R/site-library/','/R-3.5.2/library/'));great::shiny_greatshinyapp()"]
    container-image: avelt/great
    container-network: sp-example-net

logging:
  file:
    /logs/shinyproxy.log

I am on Centos7, but I don’t have a file called “/etc/systemd/system/docker.service.d/override.conf”, as in the documentation : https://www.shinyproxy.io/getting-started/#docker-startup-options

So, I modified the file “/lib/systemd/system/docker.service” and replace the ExecStart by your line :

ExecStart=/usr/bin/dockerd -H unix:// -D -H tcp://127.0.0.1:2375

Then I launched :

sudo systemctl daemon-reload
sudo systemctl restart docker

I re-build Shinyproxy, and run it. But I have a connection refused for the port 2375, again. Can you see an error in what I’m doing?

Here the shinyproxy.log :

Caused by: eu.openanalytics.containerproxy.ContainerProxyException: Failed to start container
        at eu.openanalytics.containerproxy.backend.AbstractContainerBackend.startProxy(AbstractContainerBackend.java:110) ~[containerproxy-0.8.1.jar!/:0.8.1]
        at eu.openanalytics.containerproxy.service.ProxyService.startProxy(ProxyService.java:213) ~[containerproxy-0.8.1.jar!/:0.8.1]
        at eu.openanalytics.shinyproxy.controllers.AppController.getOrStart(AppController.java:100) ~[classes!/:2.2.1]
        at eu.openanalytics.shinyproxy.controllers.AppController.startApp(AppController.java:68) ~[classes!/:2.2.1]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_212]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_212]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_212]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_212]
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209) ~[spring-web-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) ~[spring-web-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) ~[spring-webmvc-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:870) ~[spring-webmvc-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:776) ~[spring-webmvc-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991) ~[spring-webmvc-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) ~[spring-webmvc-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978) ~[spring-webmvc-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        ... 79 common frames omitted
Caused by: com.spotify.docker.client.exceptions.DockerException: java.util.concurrent.ExecutionException: javax.ws.rs.ProcessingException: org.apache.http.conn.HttpHostConnectException: Connect to localhost:2375 [
localhost/127.0.0.1] failed: Connection refused (Connection refused)
        at com.spotify.docker.client.DefaultDockerClient.propagate(DefaultDockerClient.java:2710) ~[docker-client-8.11.2.jar!/:8.11.2]
        at com.spotify.docker.client.DefaultDockerClient.request(DefaultDockerClient.java:2652) ~[docker-client-8.11.2.jar!/:8.11.2]
        at com.spotify.docker.client.DefaultDockerClient.createContainer(DefaultDockerClient.java:659) ~[docker-client-8.11.2.jar!/:8.11.2]
        at com.spotify.docker.client.DefaultDockerClient.createContainer(DefaultDockerClient.java:641) ~[docker-client-8.11.2.jar!/:8.11.2]
        at eu.openanalytics.containerproxy.backend.docker.DockerEngineBackend.startContainer(DockerEngineBackend.java:75) ~[containerproxy-0.8.1.jar!/:0.8.1]
        at eu.openanalytics.containerproxy.backend.AbstractContainerBackend.doStartProxy(AbstractContainerBackend.java:126) ~[containerproxy-0.8.1.jar!/:0.8.1]
        at eu.openanalytics.containerproxy.backend.AbstractContainerBackend.startProxy(AbstractContainerBackend.java:107) ~[containerproxy-0.8.1.jar!/:0.8.1]
        ... 95 common frames omitted
Caused by: java.util.concurrent.ExecutionException: javax.ws.rs.ProcessingException: org.apache.http.conn.HttpHostConnectException: Connect to localhost:2375 [localhost/127.0.0.1] failed: Connection refused (Conne
ction refused)
        at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357) ~[na:1.8.0_212]
        at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1895) ~[na:1.8.0_212]
        at com.spotify.docker.client.DefaultDockerClient.request(DefaultDockerClient.java:2650) ~[docker-client-8.11.2.jar!/:8.11.2]
        ... 100 common frames omitted
Caused by: javax.ws.rs.ProcessingException: org.apache.http.conn.HttpHostConnectException: Connect to localhost:2375 [localhost/127.0.0.1] failed: Connection refused (Connection refused)
        at org.glassfish.jersey.apache.connector.ApacheConnector.apply(ApacheConnector.java:481) ~[jersey-apache-connector-2.22.2.jar!/:na]
        at org.glassfish.jersey.apache.connector.ApacheConnector$1.run(ApacheConnector.java:491) ~[jersey-apache-connector-2.22.2.jar!/:na]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_212]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_212]
        at jersey.repackaged.com.google.common.util.concurrent.MoreExecutors$DirectExecutorService.execute(MoreExecutors.java:299) ~[jersey-guava-2.26-b03.jar!/:na]
        at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112) ~[na:1.8.0_212]
        at jersey.repackaged.com.google.common.util.concurrent.AbstractListeningExecutorService.submit(AbstractListeningExecutorService.java:50) ~[jersey-guava-2.26-b03.jar!/:na]
        at jersey.repackaged.com.google.common.util.concurrent.AbstractListeningExecutorService.submit(AbstractListeningExecutorService.java:37) ~[jersey-guava-2.26-b03.jar!/:na]
        at org.glassfish.jersey.apache.connector.ApacheConnector.apply(ApacheConnector.java:487) ~[jersey-apache-connector-2.22.2.jar!/:na]
        at org.glassfish.jersey.client.ClientRuntime.lambda$null$3(ClientRuntime.java:187) ~[jersey-client-2.26.jar!/:na]
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:272) ~[jersey-common-2.26.jar!/:na]
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:268) ~[jersey-common-2.26.jar!/:na]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:316) ~[jersey-common-2.26.jar!/:na]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:298) ~[jersey-common-2.26.jar!/:na]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:268) ~[jersey-common-2.26.jar!/:na]
        at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:312) ~[jersey-common-2.26.jar!/:na]
        at org.glassfish.jersey.client.ClientRuntime.lambda$createRunnableForAsyncProcessing$4(ClientRuntime.java:163) ~[jersey-client-2.26.jar!/:na]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_212]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_212]
        ... 3 common frames omitted
Caused by: org.apache.http.conn.HttpHostConnectException: Connect to localhost:2375 [localhost/127.0.0.1] failed: Connection refused (Connection refused)
        at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:159) ~[httpclient-4.5.5.jar!/:4.5.5]
        at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:373) ~[httpclient-4.5.5.jar!/:4.5.5]
        at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:381) ~[httpclient-4.5.5.jar!/:4.5.5]
        at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:237) ~[httpclient-4.5.5.jar!/:4.5.5]
        at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185) ~[httpclient-4.5.5.jar!/:4.5.5]
        at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) ~[httpclient-4.5.5.jar!/:4.5.5]
        at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:111) ~[httpclient-4.5.5.jar!/:4.5.5]
        at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) ~[httpclient-4.5.5.jar!/:4.5.5]
        at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:72) ~[httpclient-4.5.5.jar!/:4.5.5]
        at org.glassfish.jersey.apache.connector.ApacheConnector.apply(ApacheConnector.java:435) ~[jersey-apache-connector-2.22.2.jar!/:na]
        ... 21 common frames omitted
Caused by: java.net.ConnectException: Connection refused (Connection refused)
        at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_212]
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_212]
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_212]
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_212]
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_212]
        at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_212]
        at org.apache.http.conn.socket.PlainConnectionSocketFactory.connectSocket(PlainConnectionSocketFactory.java:75) ~[httpclient-4.5.5.jar!/:4.5.5]
        at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142) ~[httpclient-4.5.5.jar!/:4.5.5]
        ... 30 common frames omitted

#17

Hi,

I tried two configurations, one in the “/lib/systemd/system/docker.service” with the following line added :
ExecStart=/usr/bin/dockerd -H unix:// -D -H tcp://127.0.0.1:2375

And one by creating the folder /etc/systemd/system/docker.service.d/, and creating override.conf with following lines :
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H unix:// -D -H tcp://127.0.0.1:2375

I restarted Docker, launched Shinyproxy, but I had the same error :

.....
.....
.....
2019-05-06 13:56:11.506  INFO 1 --- [XNIO-2 task-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization completed in 21 ms
2019-05-06 13:56:13.484  INFO 1 --- [XNIO-2 task-3] e.o.containerproxy.service.UserService   : User logged in [user: avelt]
2019-05-06 13:56:13.486  INFO 1 --- [XNIO-2 task-3] e.o.containerproxy.service.UserService   : User logged in [user: avelt]
2019-05-06 13:56:21.351 ERROR 1 --- [XNIO-2 task-6] io.undertow.request                      : UT005023: Exception handling request to /app/GREAT

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is eu.openanalytics.containerproxy.ContainerProxyException: Failed to start container
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:986) ~[spring-webmvc-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:881) ~[spring-webmvc-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) ~[javax.servlet-api-3.1.0.jar!/:3.1.0]
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:855) ~[spring-webmvc-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[javax.servlet-api-3.1.0.jar!/:3.1.0]
        at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74) ~[undertow-servlet-1.4.22.Final.jar!/:1.4.22.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129) ~[undertow-servlet-1.4.22.Final.jar!/:1.4.22.Final]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320) ~[spring-security-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE]
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127) ~[spring-security-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE]
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91) ~[spring-security-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE]
        at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119) ~[spring-security-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE]
        at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137) ~[spring-security-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE]
        at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111) ~[spring-security-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE]
        at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170) ~[spring-security-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE]
        at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE]
        at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:158) ~[spring-security-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE]
        at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200) ~[spring-security-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE]
        at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116) ~[spring-security-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE]
        at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:66) ~[spring-security-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE]
        at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105) ~[spring-security-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE]
        at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56) ~[spring-security-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE
]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215) ~[spring-security-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178) ~[spring-security-web-5.0.3.RELEASE.jar!/:5.0.3.RELEASE]
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357) ~[spring-web-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270) ~[spring-web-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) ~[undertow-servlet-1.4.22.Final.jar!/:1.4.22.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-1.4.22.Final.jar!/:1.4.22.Final]
        at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) ~[spring-web-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) ~[undertow-servlet-1.4.22.Final.jar!/:1.4.22.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-1.4.22.Final.jar!/:1.4.22.Final]
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) ~[spring-web-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) ~[undertow-servlet-1.4.22.Final.jar!/:1.4.22.Final]
        at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-1.4.22.Final.jar!/:1.4.22.Final]
        at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84) ~[undertow-servlet-1.4.22.Final.jar!/:1.4.22.Final]
        at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) ~[undertow-servlet-1.4.22.Final.jar!/:1.4.22.Final]
        at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:64) ~[undertow-servlet-1.4.22.Final.jar!/:1.4.22.Final]
        at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) ~[undertow-servlet-1.4.22.Final.jar!/:1.4.22.Final]
        at io.undertow.server.handlers.PathHandler.handleRequest(PathHandler.java:94) ~[undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
        at eu.openanalytics.containerproxy.util.ProxyMappingManager$ProxyPathHandler.handleRequest(ProxyMappingManager.java:159) ~[containerproxy-0.8.1.jar!/:0.8.1]
        at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131) ~[undertow-servlet-1.4.22.Final.jar!/:1.4.22.Final]
        at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) ~[undertow-servlet-1.4.22.Final.jar!/:1.4.22.Final]
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
        at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) ~[undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
        at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) ~[undertow-servlet-1.4.22.Final.jar!/:1.4.22.Final]
        at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) ~[undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
        at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77) ~[undertow-servlet-1.4.22.Final.jar!/:1.4.22.Final]
        at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) ~[undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292) [undertow-servlet-1.4.22.Final.jar!/:1.4.22.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81) [undertow-servlet-1.4.22.Final.jar!/:1.4.22.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138) [undertow-servlet-1.4.22.Final.jar!/:1.4.22.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135) [undertow-servlet-1.4.22.Final.jar!/:1.4.22.Final]
        at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48) [undertow-servlet-1.4.22.Final.jar!/:1.4.22.Final]
        at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) [undertow-servlet-1.4.22.Final.jar!/:1.4.22.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272) [undertow-servlet-1.4.22.Final.jar!/:1.4.22.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81) [undertow-servlet-1.4.22.Final.jar!/:1.4.22.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104) [undertow-servlet-1.4.22.Final.jar!/:1.4.22.Final]
        at io.undertow.server.Connectors.executeRootHandler(Connectors.java:336) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
        at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830) [undertow-core-1.4.22.Final.jar!/:1.4.22.Final]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_212]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_212]
        at java.lang.Thread.run(Thread.java:748) [na:1.8.0_212]
Caused by: eu.openanalytics.containerproxy.ContainerProxyException: Failed to start container
        at eu.openanalytics.containerproxy.backend.AbstractContainerBackend.startProxy(AbstractContainerBackend.java:110) ~[containerproxy-0.8.1.jar!/:0.8.1]
        at eu.openanalytics.containerproxy.service.ProxyService.startProxy(ProxyService.java:213) ~[containerproxy-0.8.1.jar!/:0.8.1]
        at eu.openanalytics.shinyproxy.controllers.AppController.getOrStart(AppController.java:100) ~[classes!/:2.2.1]
        at eu.openanalytics.shinyproxy.controllers.AppController.startApp(AppController.java:68) ~[classes!/:2.2.1]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_212]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_212]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_212]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_212]
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209) ~[spring-web-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) ~[spring-web-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) ~[spring-webmvc-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:870) ~[spring-webmvc-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:776) ~[spring-webmvc-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991) ~[spring-webmvc-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) ~[spring-webmvc-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978) ~[spring-webmvc-5.0.4.RELEASE.jar!/:5.0.4.RELEASE]
        ... 79 common frames omitted
Caused by: com.spotify.docker.client.exceptions.DockerException: java.util.concurrent.ExecutionException: javax.ws.rs.ProcessingException: org.apache.http.conn.HttpHostConnectException: Connect to localhost:2375 [
localhost/127.0.0.1] failed: Connection refused (Connection refused)
        at com.spotify.docker.client.DefaultDockerClient.propagate(DefaultDockerClient.java:2710) ~[docker-client-8.11.2.jar!/:8.11.2]
        at com.spotify.docker.client.DefaultDockerClient.request(DefaultDockerClient.java:2652) ~[docker-client-8.11.2.jar!/:8.11.2]
        at com.spotify.docker.client.DefaultDockerClient.createContainer(DefaultDockerClient.java:659) ~[docker-client-8.11.2.jar!/:8.11.2]
        at com.spotify.docker.client.DefaultDockerClient.createContainer(DefaultDockerClient.java:641) ~[docker-client-8.11.2.jar!/:8.11.2]
        at eu.openanalytics.containerproxy.backend.docker.DockerEngineBackend.startContainer(DockerEngineBackend.java:75) ~[containerproxy-0.8.1.jar!/:0.8.1]
        at eu.openanalytics.containerproxy.backend.AbstractContainerBackend.doStartProxy(AbstractContainerBackend.java:126) ~[containerproxy-0.8.1.jar!/:0.8.1]
        at eu.openanalytics.containerproxy.backend.AbstractContainerBackend.startProxy(AbstractContainerBackend.java:107) ~[containerproxy-0.8.1.jar!/:0.8.1]
        ... 95 common frames omitted
Caused by: java.util.concurrent.ExecutionException: javax.ws.rs.ProcessingException: org.apache.http.conn.HttpHostConnectException: Connect to localhost:2375 [localhost/127.0.0.1] failed: Connection refused (Conne
ction refused)
......
......
......

I wanted to try following :

Capture

But I don’t find how to do that on Centos7 …

Have you an idea about this problem ?

Best,
Amandine


#18

I think I need to take my words back, as this shouldn’t be a problem, sorry for misleading you.

Note that the docker startup options (allowing port 2375) do not apply in your case (running shinyproxy inside container), so the errors above are expected.

Coming back to your original error that the application stops for a user when another user starts the same app: does this also occur in the example apps (available in the example repository that you pulled as described in the first post)?


Connect to localhost:2375 failed: Connection refused
#19

Ok, I uninstalled Docker and install it to have default parameters. I installed Shinyproxy image and launch a container. I installed your test application and my application.

I try to launch the test app, and now I have a container not responding, what I had not had last time with your test application (which worked very well).

I don’t understand because the container is launched :
image2

But shiny app doesn’t appears in the shinyproxy app :
image1

And I have following message in shinyproxy.log :

019-05-09 08:40:13.908  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/]}" onto private java.lang.Object eu.openanalytics.shinyproxy.controllers.IndexController.index(org.springframework.
ui.ModelMap,javax.servlet.http.HttpServletRequest)
2019-05-09 08:40:13.909  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/issue],methods=[POST]}" onto public java.lang.String eu.openanalytics.shinyproxy.controllers.IssueController.postIss
ue(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2019-05-09 08:40:13.911  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/app/*],methods=[GET]}" onto public java.lang.String eu.openanalytics.shinyproxy.controllers.AppController.app(org.sp
ringframework.ui.ModelMap,javax.servlet.http.HttpServletRequest)
2019-05-09 08:40:13.911  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/app_direct/**]}" onto public void eu.openanalytics.shinyproxy.controllers.AppController.appDirect(javax.servlet.http
.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2019-05-09 08:40:13.912  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/app/*],methods=[POST]}" onto public java.util.Map<java.lang.String, java.lang.String> eu.openanalytics.shinyproxy.co
ntrollers.AppController.startApp(javax.servlet.http.HttpServletRequest)
2019-05-09 08:40:13.912  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/admin]}" onto private java.lang.String eu.openanalytics.shinyproxy.controllers.AdminController.admin(org.springframe
work.ui.ModelMap,javax.servlet.http.HttpServletRequest)
2019-05-09 08:40:13.915  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/proxy/{proxyId}],methods=[GET],produces=[application/json]}" onto public org.springframework.http.ResponseEntity
<eu.openanalytics.containerproxy.model.runtime.Proxy> eu.openanalytics.containerproxy.api.ProxyController.getProxy(java.lang.String)
2019-05-09 08:40:13.915  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/proxyspec/{proxySpecId}],methods=[GET],produces=[application/json]}" onto public org.springframework.http.Respon
seEntity<eu.openanalytics.containerproxy.model.spec.ProxySpec> eu.openanalytics.containerproxy.api.ProxyController.getProxySpec(java.lang.String)
2019-05-09 08:40:13.916  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/proxy/{proxySpecId}],methods=[POST],produces=[application/json]}" onto public org.springframework.http.ResponseE
ntity<eu.openanalytics.containerproxy.model.runtime.Proxy> eu.openanalytics.containerproxy.api.ProxyController.startProxy(java.lang.String,java.util.Set<eu.openanalytics.containerproxy.model.runtime.RuntimeSetting
>)
2019-05-09 08:40:13.916  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/proxy],methods=[POST],produces=[application/json]}" onto public org.springframework.http.ResponseEntity<eu.opena
nalytics.containerproxy.model.runtime.Proxy> eu.openanalytics.containerproxy.api.ProxyController.startProxy(eu.openanalytics.containerproxy.model.spec.ProxySpec)
2019-05-09 08:40:13.917  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/proxyspec],methods=[GET],produces=[application/json]}" onto public java.util.List<eu.openanalytics.containerprox
y.model.spec.ProxySpec> eu.openanalytics.containerproxy.api.ProxyController.listProxySpecs()
2019-05-09 08:40:13.918  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/proxy],methods=[GET],produces=[application/json]}" onto public java.util.List<eu.openanalytics.containerproxy.mo
del.runtime.Proxy> eu.openanalytics.containerproxy.api.ProxyController.listProxies()
2019-05-09 08:40:13.918  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/proxy/{proxyId}],methods=[DELETE],produces=[application/json]}" onto public org.springframework.http.ResponseEnt
ity<java.lang.String> eu.openanalytics.containerproxy.api.ProxyController.stopProxy(java.lang.String)
2019-05-09 08:40:13.919  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/route/**]}" onto public void eu.openanalytics.containerproxy.api.ProxyRouteController.route(javax.servlet.http.H
ttpServletRequest,javax.servlet.http.HttpServletResponse)
2019-05-09 08:40:13.925  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public java.lang.String eu.openanalytics.containerproxy.ui.ErrorController.handle
Error(org.springframework.ui.ModelMap,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2019-05-09 08:40:13.925  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],consumes=[application/json],produces=[application/json]}" onto public org.springframework.http.ResponseEntity
<java.util.Map<java.lang.String, java.lang.Object>> eu.openanalytics.containerproxy.ui.ErrorController.error(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2019-05-09 08:40:13.926  INFO 1 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/login],methods=[GET]}" onto public java.lang.Object eu.openanalytics.containerproxy.ui.LoginController.getLoginPage(
java.util.Optional<java.lang.String>,org.springframework.ui.ModelMap,javax.servlet.http.HttpServletRequest)
2019-05-09 08:40:13.985  INFO 1 --- [main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/assets/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2019-05-09 08:40:13.985  INFO 1 --- [main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2019-05-09 08:40:13.985  INFO 1 --- [main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2019-05-09 08:40:14.008  INFO 1 --- [main] .m.m.a.ExceptionHandlerExceptionResolver : Detected @ExceptionHandler methods in baseController.RestErrorHandler
2019-05-09 08:40:14.044  INFO 1 --- [main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandl
er]
2019-05-09 08:40:14.154  INFO 1 --- [main] o.s.b.a.w.s.WelcomePageHandlerMapping    : Adding welcome page template: index
2019-05-09 08:40:14.237  INFO 1 --- [main] o.s.l.c.support.AbstractContextSource    : Property 'userDn' not set - anonymous context will be used for read-write operations
2019-05-09 08:40:14.696  INFO 1 --- [main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2019-05-09 08:40:14.698  INFO 1 --- [main] o.s.j.e.a.AnnotationMBeanExporter        : Bean with name 'dataSource' has been autodetected for JMX exposure
2019-05-09 08:40:14.703  INFO 1 --- [main] o.s.j.e.a.AnnotationMBeanExporter        : Located MBean 'dataSource': registering with JMX server as MBean [com.zaxxer.hikari:name=dataSource,type=HikariDataSource]
2019-05-09 08:40:14.811  INFO 1 --- [main] o.s.b.w.e.u.UndertowServletWebServer     : Undertow started on port(s) 80 (http) with context path ''
2019-05-09 08:40:14.814  INFO 1 --- [main] e.o.c.ContainerProxyApplication          : Started ContainerProxyApplication in 5.286 seconds (JVM running for 5.933)
2019-05-09 08:42:24.049  INFO 1 --- [XNIO-2 task-1] io.undertow.servlet                      : Initializing Spring FrameworkServlet 'dispatcherServlet'
2019-05-09 08:42:24.049  INFO 1 --- [XNIO-2 task-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization started
2019-05-09 08:42:24.070  INFO 1 --- [XNIO-2 task-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization completed in 21 ms
2019-05-09 08:42:25.872  INFO 1 --- [XNIO-2 task-3] e.o.containerproxy.service.UserService   : User logged in [user: avelt]
2019-05-09 08:42:25.874  INFO 1 --- [XNIO-2 task-3] e.o.containerproxy.service.UserService   : User logged in [user: avelt]
2019-05-09 08:42:31.192  INFO 1 --- [XNIO-2 task-6] c.s.docker.client.DefaultDockerClient    : Starting container with Id: 6deac7ce77414878586217cdbe342a9e1c9d08a1b7be6311be37f97a29be511b
2019-05-09 08:42:33.493  WARN 1 --- [XNIO-2 task-6] e.o.shinyproxy.ShinyProxyTestStrategy    : Container unresponsive, trying again (2/900): http://localhost:20000
2019-05-09 08:42:35.494  WARN 1 --- [XNIO-2 task-6] e.o.shinyproxy.ShinyProxyTestStrategy    : Container unresponsive, trying again (3/900): http://localhost:20000
2019-05-09 08:42:37.495  WARN 1 --- [XNIO-2 task-6] e.o.shinyproxy.ShinyProxyTestStrategy    : Container unresponsive, trying again (4/900): http://localhost:20000
2019-05-09 08:42:39.496  WARN 1 --- [XNIO-2 task-6] e.o.shinyproxy.ShinyProxyTestStrategy    : Container unresponsive, trying again (5/900): http://localhost:20000
...

Here the command to launch Shinyproxy :

docker run -d -v /var/run/docker.sock:/var/run/docker.sock -v /var/Shinyproxy/ShinyProxy-config-examples/02-containerized-docker-engine:/logs --net sp-example-net -p 80:80 shinyproxy

And here the application.yml file :

proxy:
  port: 80
  authentication: simple
  container-wait-time: 1800000
  heartbeat-timeout: 1800000
  template-path: ./templates/1col
  admin-groups: admins
  users:
  - name: larenault
    password: pass1
  - name: avelt
    password: pass2
    groups: admins
  specs:
  - id: GREAT
    container-cmd: ["R", "-e", ".libPaths(c('/usr/local/lib/R/site-library/','/R-3.5.2/library/'));great::shiny_greatshinyapp()"]
    container-image: avelt/great
    container-network: sp-example-net
  - id: 01_hello
    display-name: Hello Application
    description: Application which demonstrates the basics of a Shiny app
    container-cmd: ["R", "-e", "shinyproxy::run_01_hello()"]
    container-image: openanalytics/shinyproxy-demo
    access-groups: [admins]

logging:
  file:
    /logs/shinyproxy.log

#20

It seems you are missing

docker:
  internal-networking: true

and container-network: sp-example-net for the “hello” application in your application.yml


#21

Sorry, thank you, it works.

So, multiple users can access the Hello application with no problem, with following containers :
image1

But for my app, I connect on the app, then an other people connect, and my screen become grey. Here the containers :
image2

I don’t know where the problem come from.

Here the shinyproxy.log :

2019-05-10 11:41:24.737 INFO 1 — [main] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page template: index
2019-05-10 11:41:24.819 INFO 1 — [main] o.s.l.c.support.AbstractContextSource : Property ‘userDn’ not set - anonymous context will be used for read-write operations
2019-05-10 11:41:24.994 INFO 1 — [main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2019-05-10 11:41:24.995 INFO 1 — [main] o.s.j.e.a.AnnotationMBeanExporter : Bean with name ‘dataSource’ has been autodetected for JMX exposure
2019-05-10 11:41:25.006 INFO 1 — [main] o.s.j.e.a.AnnotationMBeanExporter : Located MBean ‘dataSource’: registering with JMX server as MBean [com.zaxxer.hikari:name=dataSource,type=HikariDataSource]
2019-05-10 11:41:25.078 INFO 1 — [main] o.s.b.w.e.u.UndertowServletWebServer : Undertow started on port(s) 80 (http) with context path ‘’
2019-05-10 11:41:25.082 INFO 1 — [main] e.o.c.ContainerProxyApplication : Started ContainerProxyApplication in 5.084 seconds (JVM running for 5.673)
2019-05-10 11:42:19.442 INFO 1 — [XNIO-2 task-1] io.undertow.servlet : Initializing Spring FrameworkServlet ‘dispatcherServlet’
2019-05-10 11:42:19.442 INFO 1 — [XNIO-2 task-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet ‘dispatcherServlet’: initialization started
2019-05-10 11:42:19.474 INFO 1 — [XNIO-2 task-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet ‘dispatcherServlet’: initialization completed in 32 ms
2019-05-10 11:42:21.711 INFO 1 — [XNIO-2 task-7] e.o.containerproxy.service.UserService : User logged in [user: avelt]
2019-05-10 11:42:21.712 INFO 1 — [XNIO-2 task-7] e.o.containerproxy.service.UserService : User logged in [user: avelt]
2019-05-10 11:42:24.923 INFO 1 — [XNIO-2 task-13] c.s.docker.client.DefaultDockerClient : Starting container with Id: 77f5fe6361293eb6998b1439321c36328d8a35aa9b39bcd55b874fcc6b7c6ad7
2019-05-10 11:42:29.615 INFO 1 — [XNIO-2 task-13] e.o.containerproxy.service.ProxyService : Proxy activated [user: avelt] [spec: GREAT] [id: 2276a713-73ba-48fc-9669-572a870aa705]
2019-05-10 11:42:35.498 INFO 1 — [XNIO-2 task-16] c.s.docker.client.DefaultDockerClient : Starting container with Id: 7bcb5eff959eb7c19672445b575d6287d873d1612512002e1013e421088f0445
2019-05-10 11:42:38.270 INFO 1 — [XNIO-2 task-16] e.o.containerproxy.service.ProxyService : Proxy activated [user: avelt] [spec: 01_hello] [id: 3969ef79-4991-413d-a4f3-32da221c969d]
2019-05-10 11:44:38.459 INFO 1 — [XNIO-2 task-3] e.o.containerproxy.service.UserService : User logged in [user: larenault]
2019-05-10 11:44:38.584 INFO 1 — [XNIO-2 task-3] e.o.containerproxy.service.UserService : User logged in [user: larenault]
2019-05-10 11:44:44.525 INFO 1 — [XNIO-2 task-11] c.s.docker.client.DefaultDockerClient : Starting container with Id: 3fb09d51031495119d80a9fa2cca553439316b7acc31d5f2bb3c71a762de235d
2019-05-10 11:44:50.351 INFO 1 — [XNIO-2 task-11] e.o.containerproxy.service.ProxyService : Proxy activated [user: larenault] [spec: 01_hello] [id: e798886d-90fd-43d0-97bf-3f914935e2ac]
2019-05-10 11:47:28.067 INFO 1 — [XNIO-2 task-16] c.s.docker.client.DefaultDockerClient : Starting container with Id: a55e66b5d643d03624a9aa38a3240390307c2d92feb7983673911ca16f4f175a
2019-05-10 11:47:41.397 INFO 1 — [XNIO-2 task-16] e.o.containerproxy.service.ProxyService : Proxy activated [user: larenault] [spec: GREAT] [id: 2bdfc122-333d-479e-bf18-a63dd23b053a]
2019-05-10 11:50:01.843 INFO 1 — [XNIO-2 task-1] e.o.containerproxy.service.UserService : User logged out [user: larenault]
2019-05-10 11:50:02.786 INFO 1 — [pool-2-thread-1] e.o.containerproxy.service.ProxyService : Proxy released [user: larenault] [spec: 01_hello] [id: e798886d-90fd-43d0-97bf-3f914935e2ac]
2019-05-10 11:50:03.278 INFO 1 — [pool-2-thread-1] e.o.containerproxy.service.ProxyService : Proxy released [user: larenault] [spec: GREAT] [id: 2bdfc122-333d-479e-bf18-a63dd23b053a]

Best,
Amandine


#22

If it works for the test application, it could be something specific to your application, and not the shinyproxy configuration. Checking the container logs may help: you’d need to add

proxy:
  container-log-path: /some/path

to your configuration to enable them (see https://www.shinyproxy.io/configuration/#reporting-issues).