openvidu-server: DockerManager allows to manually configure port binding

pull/375/head
pabloFuente 2019-08-02 11:43:39 +02:00
parent eced1f618c
commit bf76ff2bb5
2 changed files with 17 additions and 6 deletions

View File

@ -169,7 +169,8 @@ public class ComposedRecordingService extends RecordingService {
List<Bind> binds = new ArrayList<>(); List<Bind> binds = new ArrayList<>();
binds.add(bind1); binds.add(bind1);
binds.add(bind2); binds.add(bind2);
containerId = dockerManager.runContainer(container, containerName, volumes, binds, null, "host", envs); containerId = dockerManager.runContainer(container, containerName, volumes, binds, null, null, "host",
envs);
containers.put(containerId, containerName); containers.put(containerId, containerName);
} catch (Exception e) { } catch (Exception e) {
this.cleanRecordingMaps(recording); this.cleanRecordingMaps(recording);

View File

@ -122,7 +122,7 @@ public class DockerManager {
} }
public String runContainer(String container, String containerName, List<Volume> volumes, List<Bind> binds, public String runContainer(String container, String containerName, List<Volume> volumes, List<Bind> binds,
List<Integer> exposedPorts, String networkMode, List<String> envs) throws Exception { List<Integer> exposedPorts, Ports portBindings, String networkMode, List<String> envs) throws Exception {
CreateContainerCmd cmd = dockerClient.createContainerCmd(container).withName(containerName).withEnv(envs); CreateContainerCmd cmd = dockerClient.createContainerCmd(container).withName(containerName).withEnv(envs);
HostConfig hostConfig = new HostConfig().withNetworkMode(networkMode); HostConfig hostConfig = new HostConfig().withNetworkMode(networkMode);
@ -133,14 +133,14 @@ public class DockerManager {
hostConfig.withBinds(binds); hostConfig.withBinds(binds);
} }
if (exposedPorts != null) { if (exposedPorts != null) {
Ports ps = new Ports(); Ports symmetricPortBindings = new Ports();
List<ExposedPort> expPorts = new ArrayList<>(); List<ExposedPort> expPorts = new ArrayList<>();
exposedPorts.forEach(p -> { exposedPorts.forEach(p -> {
ExposedPort port = ExposedPort.tcp(p); ExposedPort port = ExposedPort.tcp(p);
expPorts.add(port); expPorts.add(port);
ps.bind(port, Binding.bindPort(p)); symmetricPortBindings.bind(port, Binding.bindPort(p));
}); });
hostConfig.withPortBindings(ps); hostConfig.withPortBindings((portBindings == null) ? symmetricPortBindings : portBindings);
cmd.withExposedPorts(expPorts); cmd.withExposedPorts(expPorts);
} }
@ -213,7 +213,17 @@ public class DockerManager {
} }
} }
static public String getDokerGatewayIp() { public String getContainerIp(String containerId) {
try {
return CommandExecutor.execCommand("/bin/sh", "-c",
"docker inspect -f \"{{ .NetworkSettings.IPAddress }}\" " + containerId);
} catch (IOException | InterruptedException e) {
log.error(e.getMessage());
return null;
}
}
static public String getDockerGatewayIp() {
try { try {
return CommandExecutor.execCommand("/bin/sh", "-c", return CommandExecutor.execCommand("/bin/sh", "-c",
"docker network inspect bridge --format='{{(index .IPAM.Config 0).Gateway}}'"); "docker network inspect bridge --format='{{(index .IPAM.Config 0).Gateway}}'");