From aa5f9a238a9e085cfa46c297414cc19226a42606 Mon Sep 17 00:00:00 2001 From: Serge Rider Date: Tue, 13 Oct 2020 18:27:17 +0300 Subject: [PATCH] CB-423 Docker environment resolve --- deploy/docker/run-docker-container.sh | 5 ++++- deploy/scripts/run-server.sh | 3 --- .../src/io/cloudbeaver/server/CBApplication.java | 13 ++++++++++++- .../src/io/cloudbeaver/server/CBConstants.java | 1 + 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/deploy/docker/run-docker-container.sh b/deploy/docker/run-docker-container.sh index fe1b87f381..a9cd9f42f5 100755 --- a/deploy/docker/run-docker-container.sh +++ b/deploy/docker/run-docker-container.sh @@ -1,2 +1,5 @@ -docker run --name cloudbeaver --rm -ti -p 8978:8978 -v /var/cloudbeaver/workspace:/opt/cloudbeaver/workspace dbeaver/cloudbeaver:dev +# Detect host machine IP Address (we need this when run in docker container) +export CB_LOCAL_HOST_ADDR=$(ifconfig | grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" | grep -v 127.0.0.1 | awk '{ print $2 }' | cut -f2 -d: | head -n1) + +docker run --name cloudbeaver --rm -ti -p 8978:8978 --add-host=host.docker.internal:${CB_LOCAL_HOST_ADDR} -v /var/cloudbeaver/workspace:/opt/cloudbeaver/workspace dbeaver/cloudbeaver:dev diff --git a/deploy/scripts/run-server.sh b/deploy/scripts/run-server.sh index 779aacfa4f..9321d25647 100755 --- a/deploy/scripts/run-server.sh +++ b/deploy/scripts/run-server.sh @@ -1,8 +1,5 @@ #!/bin/bash -# Detect host machine IP Address (we need this when run in docker container) -export CB_LOCAL_HOST_ADDR=$(ifconfig | grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" | grep -v 127.0.0.1 | awk '{ print $2 }' | cut -f2 -d: | head -n1) - launcherJar=( server/plugins/org.eclipse.equinox.launcher*.jar ) echo "Starting Cloudbeaver Server" diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CBApplication.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CBApplication.java index ea8dbfad8e..0466113f3c 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CBApplication.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CBApplication.java @@ -49,6 +49,7 @@ import java.io.*; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.URL; +import java.net.UnknownHostException; import java.nio.charset.StandardCharsets; import java.util.*; @@ -235,8 +236,8 @@ public class CBApplication extends BaseApplicationImpl { log.debug("\tServer is in configuration mode!"); } { - log.debug("\tLocal host addresses:"); determineLocalAddresses(); + log.debug("\tLocal host addresses:"); for (InetAddress ia : localInetAddresses) { log.debug("\t\t" + ia.getHostAddress() + " (" + ia.getCanonicalHostName() + ")"); } @@ -274,6 +275,16 @@ public class CBApplication extends BaseApplicationImpl { // for (InetAddress addr : allMyIps) { // System.out.println("Local addr: " + addr); // } + String dockerHostAddress = System.getenv(CBConstants.VAR_HOST_DOCKER_INTERNAL); + if (!CommonUtils.isEmpty(dockerHostAddress)) { + try { + InetAddress dockerAddress = InetAddress.getByName(dockerHostAddress); + localInetAddresses.add(dockerAddress); + log.debug("\tRun in Docker container (" + dockerAddress + ")"); + } catch (UnknownHostException e) { + // Ignore + } + } boolean hasLoopbackAddress = false; for (Enumeration en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { NetworkInterface intf = en.nextElement(); diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CBConstants.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CBConstants.java index 1f9ae14c23..5666c517fe 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CBConstants.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CBConstants.java @@ -68,4 +68,5 @@ public class CBConstants { public static final String VAR_CB_LOCAL_HOST_ADDR = "CB_LOCAL_HOST_ADDR"; + public static final String VAR_HOST_DOCKER_INTERNAL = "host.docker.internal"; }