ShinyProxy on Google VM Container-Optimized OS

Has anybody successfully set up Docker in a Google VM instance with a Container-Optimized OS image (https://cloud.google.com/container-optimized-os/docs/how-to/create-configure-instance)? Or, do you have another workaround to get ShinyProxy working on GCP in general?

I’ve been able to get the single Euler app working. But when I try the containerized ShinyProxy example (https://github.com/openanalytics/shinyproxy-config-examples/tree/master/02-containerized-docker-engine), I run into trouble with:

sudo docker run -v /var/run/docker.sock:/var/run/docker.sock:ro --group-add $(getent group docker | cut -d: -f3) --net sp-example-net -p 8080:8080 shinyproxy-example

Error message:

-bash: getent: command not found
Unable to find image ‘sp-example-net:latest’ locally
docker: Error response from daemon: pull access denied for sp-example-net, repository does not exist or may require ‘docker login’: denied: requested access to the resource is denied.
See ‘docker run --help’.

If I remove the --group-add section, it works:

sudo docker run -v /var/run/docker.sock:/var/run/docker.sock:ro --net sp-example-net -p 8080:8080 shinyproxy-example

SSH output:

. ____ _ __ _ _
/\ / __ _ () __ __ _ \ \ \
( ( )_
_ | '_ | '| | ’ / ` | \ \ \
\/ )| |)| | | | | || (| | ) ) ) )
’ |
| .__|| ||| |_, | / / / /
=========|
|==============|/=////
:: Spring Boot :: (v2.5.12)

2022-06-07 04:17:10.279 INFO 1 — [ main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
2022-06-07 04:17:10.287 INFO 1 — [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode.
2022-06-07 04:17:10.402 INFO 1 — [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 90 ms. Found 0 Redis repository interfaces.
2022-06-07 04:17:11.541 INFO 1 — [ main] e.o.c.service.IdentifierService : ShinyProxy runtimeId: e2b5c8a2-3b70-4022-8692-b798e969c17b
2022-06-07 04:17:11.679 INFO 1 — [ main] e.o.c.service.IdentifierService : ShinyProxy instanceID (hash of config): 5a53912d090201b2596f73f5904b6cdfcdd796e8
2022-06-07 04:17:12.571 WARN 1 — [ main] io.undertow.websockets.jsr : UT026010: Buffer pool was not set on WebSocketDeploymentInfo, the default pool will be used
2022-06-07 04:17:12.606 INFO 1 — [ main] io.undertow.servlet : Initializing Spring embedded WebApplicationContext
2022-06-07 04:17:12.606 INFO 1 — [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 5461 ms
2022-06-07 04:17:12.827 INFO 1 — [ main] o.s.boot.web.servlet.RegistrationBean : Filter orderedFormContentFilter was not registered (disabled)
2022-06-07 04:17:13.598 INFO 1 — [ main] o.s.s.web.DefaultSecurityFilterChain : Will not secure any request
2022-06-07 04:17:13.620 INFO 1 — [ main] e.o.c.stat.StatCollectorFactory : Disabled. Usage statistics will not be processed.
2022-06-07 04:17:13.630 WARN 1 — [ main] org.thymeleaf.templatemode.TemplateMode : [THYMELEAF][main] Template Mode ‘HTML5’ is deprecated. Using Template Mode ‘HTML’ instead.
2022-06-07 04:17:14.500 INFO 1 — [ main] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page template: index
2022-06-07 04:17:15.302 INFO 1 — [ main] o.s.l.c.support.AbstractContextSource : Property ‘userDn’ not set - anonymous context will be used for read-write operations
2022-06-07 04:17:15.738 INFO 1 — [ main] io.undertow : starting server: Undertow - 2.2.8.Final
2022-06-07 04:17:15.751 INFO 1 — [ main] org.xnio : XNIO version 3.8.4.Final
2022-06-07 04:17:15.766 INFO 1 — [ main] org.xnio.nio : XNIO NIO Implementation Version 3.8.4.Final
2022-06-07 04:17:15.939 INFO 1 — [ main] org.jboss.threads : JBoss Threads version 3.1.0.Final
2022-06-07 04:17:16.045 INFO 1 — [ main] o.s.b.w.e.undertow.UndertowWebServer : Undertow started on port(s) 8080 (http)
2022-06-07 04:17:16.244 INFO 1 — [ main] io.undertow.servlet : Initializing Spring embedded WebApplicationContext
2022-06-07 04:17:16.244 INFO 1 — [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 191 ms
2022-06-07 04:17:16.277 INFO 1 — [ main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 1 endpoint(s) beneath base path ‘/actuator’
2022-06-07 04:17:16.373 INFO 1 — [ main] io.undertow : starting server: Undertow - 2.2.8.Final
2022-06-07 04:17:16.383 INFO 1 — [ main] o.s.b.w.e.undertow.UndertowWebServer : Undertow started on port(s) 9090 (http)
2022-06-07 04:17:16.424 INFO 1 — [ main] e.o.c.service.AppRecoveryService : Recovery of running apps disabled
2022-06-07 04:17:16.424 INFO 1 — [ main] e.o.c.util.StartupEventListener : Started ShinyProxy 2.6.1 (ContainerProxy 0.8.11)

And I can view the home page of the example, but when clicking on either of the apps, I get the Error status code 500, specifically java.io.IOException: Permission denied

I’d appreciate tips from anybody with experience with this! Thanks

Hej - I have a question, how did you set it up on Google Cloud?
I am following this example but I can’t reach my Shinyproxy landing page.


Best,
Potchara S.