Add database Permission denied issue

Hi,

When installing using the docker compose file, everything fires up, and i put in my licence key and verify the user, but when I try and add a database (Synapse) it comes up on the UI with a 500 error and no details, but on the console I see the following exception:

docker-compose-datalore-1 | 08:27:06.519 WARN [qtp2076287037-26] j.o.b.s.webmvc.ExceptionControllerAdvice Unhandled exception from spring controllers while processing POST request for url /api/databases/connection-check
docker-compose-datalore-1 | com.sun.jna.LastErrorException: [13] Permission denied
docker-compose-datalore-1 | at com.github.dockerjava.transport.LinuxDomainSocket.connect(Native Method)
docker-compose-datalore-1 | at com.github.dockerjava.transport.LinuxDomainSocket.connect(LinuxDomainSocket.java:49)
docker-compose-datalore-1 | at com.github.dockerjava.transport.DomainSocket.open(DomainSocket.java:69)
docker-compose-datalore-1 | at com.github.dockerjava.transport.DomainSocket.(DomainSocket.java:59)
docker-compose-datalore-1 | at com.github.dockerjava.transport.LinuxDomainSocket.(LinuxDomainSocket.java:41)
docker-compose-datalore-1 | at com.github.dockerjava.transport.DomainSocket.get(DomainSocket.java:140)
docker-compose-datalore-1 | at com.github.dockerjava.httpclient5.ApacheDockerHttpClientImpl$2.createSocket(ApacheDockerHttpClientImpl.java:137)
docker-compose-datalore-1 | at org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:125)
docker-compose-datalore-1 | at org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:409)
docker-compose-datalore-1 | at org.apache.hc.client5.http.impl.classic.InternalExecRuntime.connectEndpoint(InternalExecRuntime.java:164)
docker-compose-datalore-1 | at org.apache.hc.client5.http.impl.classic.InternalExecRuntime.connectEndpoint(InternalExecRuntime.java:174)
docker-compose-datalore-1 | at org.apache.hc.client5.http.impl.classic.ConnectExec.execute(ConnectExec.java:135)
docker-compose-datalore-1 | at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
docker-compose-datalore-1 | at org.apache.hc.client5.http.impl.classic.ExecChainElement$1.proceed(ExecChainElement.java:57)
docker-compose-datalore-1 | at org.apache.hc.client5.http.impl.classic.ProtocolExec.execute(ProtocolExec.java:172)
docker-compose-datalore-1 | at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
docker-compose-datalore-1 | at org.apache.hc.client5.http.impl.classic.ExecChainElement$1.proceed(ExecChainElement.java:57)
docker-compose-datalore-1 | at org.apache.hc.client5.http.impl.classic.HttpRequestRetryExec.execute(HttpRequestRetryExec.java:93)
docker-compose-datalore-1 | at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
docker-compose-datalore-1 | at org.apache.hc.client5.http.impl.classic.ExecChainElement$1.proceed(ExecChainElement.java:57)
docker-compose-datalore-1 | at org.apache.hc.client5.http.impl.classic.ContentCompressionExec.execute(ContentCompressionExec.java:128)
docker-compose-datalore-1 | at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
docker-compose-datalore-1 | at org.apache.hc.client5.http.impl.classic.ExecChainElement$1.proceed(ExecChainElement.java:57)
docker-compose-datalore-1 | at org.apache.hc.client5.http.impl.classic.RedirectExec.execute(RedirectExec.java:116)
docker-compose-datalore-1 | at org.apache.hc.client5.http.impl.classic.ExecChainElement.execute(ExecChainElement.java:51)
docker-compose-datalore-1 | at org.apache.hc.client5.http.impl.classic.InternalHttpClient.doExecute(InternalHttpClient.java:178)
docker-compose-datalore-1 | at org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:67)
docker-compose-datalore-1 | at com.github.dockerjava.httpclient5.ApacheDockerHttpClientImpl.execute(ApacheDockerHttpClientImpl.java:175)
docker-compose-datalore-1 | at com.github.dockerjava.httpclient5.ApacheDockerHttpClient.execute(ApacheDockerHttpClient.java:9)
docker-compose-datalore-1 | at com.github.dockerjava.core.DefaultInvocationBuilder.execute(DefaultInvocationBuilder.java:228)
docker-compose-datalore-1 | at com.github.dockerjava.core.DefaultInvocationBuilder.get(DefaultInvocationBuilder.java:202)
docker-compose-datalore-1 | at com.github.dockerjava.core.DefaultInvocationBuilder.get(DefaultInvocationBuilder.java:74)
docker-compose-datalore-1 | at com.github.dockerjava.core.exec.InspectImageCmdExec.execute(InspectImageCmdExec.java:28)
docker-compose-datalore-1 | at com.github.dockerjava.core.exec.InspectImageCmdExec.execute(InspectImageCmdExec.java:13)
docker-compose-datalore-1 | at com.github.dockerjava.core.exec.AbstrSyncDockerCmdExec.exec(AbstrSyncDockerCmdExec.java:21)
docker-compose-datalore-1 | at com.github.dockerjava.core.command.AbstrDockerCmd.exec(AbstrDockerCmd.java:35)
docker-compose-datalore-1 | at com.github.dockerjava.core.command.InspectImageCmdImpl.exec(InspectImageCmdImpl.java:40)
docker-compose-datalore-1 | at jetbrains.datalore.notebook.server.databases.tasks.docker.DockerDatabaseTaskProcessor.processTask(DockerDatabaseTaskProcessor.kt:33)
docker-compose-datalore-1 | at jetbrains.datalore.notebook.server.databases.tasks.AbstractDatabaseTasksService.submitDatabaseTask(AbstractDatabaseTasksService.kt:61)

It’s been almost a year since you’ve asked, but I had the same issue today.

After spending some time I found the culprit. There is a file mount in docker-compose.yaml file to docker socket. The line looks like this:

- "/var/run/docker.sock:/var/run/docker.sock"

I’m using docker rootless. That means my (rootless) docker socket is on a different place. This is how I replaced the line to get it running:

- "/run/user/1001/docker.sock:/var/run/docker.sock"

Of course it depends on your system where to mount the socket. You can find the path to the socket with docker context ls command.