/** * Creates an {@link ExposedPort} for {@link InternetProtocol#TCP}. This is a shortcut for * <code>new ExposedPort(port, {@link InternetProtocol#TCP})</code> */ public static ExposedPort tcp(int port) { return new ExposedPort(port, TCP); }
@Override public boolean equals(Object obj) { if (obj instanceof ExposedPort) { ExposedPort other = (ExposedPort) obj; return new EqualsBuilder().append(protocol, other.getProtocol()).append(port, other.getPort()).isEquals(); } else { return super.equals(obj); } }
@Override public ExposedPort deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { ObjectCodec oc = jsonParser.getCodec(); JsonNode node = oc.readTree(jsonParser); if (!node.equals(NullNode.getInstance())) { Entry<String, JsonNode> field = node.fields().next(); return ExposedPort.parse(field.getKey()); } else { return null; } } }
private Binding[] getPortBindings(int containerPort, Container container, DockerFacade dockerClient) { NetworkSettings networkSettings = getNetworkSettings(container, dockerClient); return networkSettings.getPorts().getBindings().get(ExposedPort.tcp(containerPort)); }
@Override protected CreateContainerCmd dockerCommand() { int port = getServicePort(); ExposedPort exposedPort = ExposedPort.tcp(port); Ports portBindings = new Ports(); if (getCluster().isMapPortsToHost()) { portBindings.bind(exposedPort, Ports.Binding.bindPort(port)); } return DockerClientFactory.build().createContainerCmd(config.getImageName() + ":" + config.getImageTag()) .withName(getName()) .withExposedPorts(new ExposedPort(ZooKeeperConfig.DEFAULT_ZOOKEEPER_PORT), new ExposedPort(2888), new ExposedPort(3888)) .withPortBindings(portBindings); }
public List<ExposedPort> getExposedPorts() { List<Map<String, Object>> rawExposedPorts = (List<Map<String, Object>>) getProperty("exposed_ports"); List<ExposedPort> exposedPorts = Lists.newArrayList(); if (rawExposedPorts != null) { for (Map<String, Object> rawExposedPortsEntry : rawExposedPorts) { int port = ((Number) rawExposedPortsEntry.get("port")).intValue(); if ("udp".equals(rawExposedPortsEntry.get("protocol"))) { exposedPorts.add(ExposedPort.udp(port)); } else { exposedPorts.add(ExposedPort.tcp(port)); } } } return exposedPorts; }
private void exportPortBindings(EnvVars envs, Map<ExposedPort, Binding[]> bindings) { StringBuilder ports = new StringBuilder(); for (ExposedPort exposedPort : bindings.keySet()) { ports.append(exposedPort.toString()).append(ID_SEPARATOR); Binding[] exposedPortBinding = bindings.get(exposedPort); if (exposedPortBinding == null) { continue; } envs.put(PORT_BINDING_PREFIX + exposedPort.getProtocol().name() + "_" + exposedPort.getPort(), exposedPortBinding[0].getHostPortSpec()); StringBuilder portBinding = new StringBuilder(); String hostIp = exposedPortBinding[0].getHostIp(); if (hostIp != null && hostIp.length() > 0) { portBinding.append(hostIp).append(":"); portBinding.append(exposedPortBinding[0].getHostPortSpec()); envs.put(HOST_SOCKET_PREFIX + exposedPort.getProtocol().name() + "_" + exposedPort.getPort(), portBinding.toString()); } } String bindPorts = ports.substring(0, ports.length() - 1).toString(); envs.put(PORT_BINDINGS_ENV_VAR, bindPorts); }
private static Map<Integer, Integer> getMappedPorts(final Ports containerPorts) { final HashMap<Integer, Integer> ports = new HashMap<>(); for (final Map.Entry<ExposedPort, Ports.Binding[]> m : containerPorts.getBindings().entrySet()) { ports.put(m.getKey().getPort(), Integer.valueOf(m.getValue()[0].getHostPortSpec())); } return ports; } }
@Override public void serialize(ExposedPort exposedPort, JsonGenerator jsonGen, SerializerProvider serProvider) throws IOException, JsonProcessingException { jsonGen.writeStartObject(); jsonGen.writeFieldName(exposedPort.toString()); jsonGen.writeEndObject(); }
private Ports createPortBindings(PortBinding... portBinding) { Ports bindings = new Ports(); for (PortBinding binding : portBinding) { ExposedPort inner = tcp(binding.inner); bindings.bind(inner, bindPort(binding.exposed)); } return bindings; }
@Override protected CreateContainerCmd dockerCommand() { int port = getServicePort(); ExposedPort exposedPort = ExposedPort.tcp(port); Ports portBindings = new Ports(); if (getCluster().isMapPortsToHost()) { portBindings.bind(exposedPort, Ports.Binding.bindPort(port)); } CreateContainerCmd cmd = DockerClientFactory.build().createContainerCmd(getImageName() + ":" + getImageTag()) .withName(getName()) .withExposedPorts(new ExposedPort(getServicePort())) .withEnv(newEnvironment() .withValues(getMesosMasterEnvVars()) .withValues(getSharedEnvVars()) .createEnvironment()) .withPortBindings(portBindings); MesosDns mesosDns = getCluster().getMesosDns(); if (mesosDns != null) { cmd.withDns(mesosDns.getIpAddress()); } return cmd; }
@Override public CreateContainerCmd build(ServiceDescriptor sd, CreateContainerCmd cmd, PortBinding pb) { List<ExposedPort> ports = new ArrayList<>(Arrays.asList(cmd.getExposedPorts())); ExposedPort containerPort = pb.protocol() .equals(Protocol.TCP) ? ExposedPort.tcp(pb.exposedPort()) : ExposedPort.udp(pb.exposedPort()); ports.add(containerPort); Ports bindings = cmd.getPortBindings(); if (bindings == null) { bindings = new Ports(); } bindings.bind(containerPort, pb.hostIp() .isEmpty() ? Binding.bindPort(pb.hostPort()) : Binding.bindIpAndPort(pb.hostIp(), pb.hostPort())); return cmd.withExposedPorts(ports) .withPortBindings(bindings); }
private List<PortMapping> getContainerPorts(InspectContainerResponse inspectInfo) { HostConfig hostConfig = inspectInfo.getHostConfig(); Ports ports = hostConfig.getPortBindings(); return ports.getBindings().entrySet().stream() .flatMap(entity -> { int exposedPort = entity.getKey().getPort(); return Arrays.stream(entity.getValue()) .map(Binding::getHostPortSpec) .map(hostPort -> new PortMapping(Integer.valueOf(hostPort), exposedPort)); }) .collect(Collectors.toList()); }
@Override public void serialize(ExposedPorts exposedPorts, JsonGenerator jsonGen, SerializerProvider serProvider) throws IOException, JsonProcessingException { jsonGen.writeStartObject(); for (ExposedPort exposedPort : exposedPorts.getExposedPorts()) { jsonGen.writeFieldName(exposedPort.toString()); jsonGen.writeStartObject(); jsonGen.writeEndObject(); } jsonGen.writeEndObject(); }
/** * Creates an {@link ExposedPort} for {@link InternetProtocol#UDP}. This is a shortcut for * <code>new ExposedPort(port, {@link InternetProtocol#UDP})</code> */ public static ExposedPort udp(int port) { return new ExposedPort(port, UDP); }
private void startContainer(Map<String, String> env, Map<Integer, Integer> ports, Map<String, String> cmd, Consumer<String> log) { final CreateContainerResponse container = client.createContainerCmd(image) .withCmd(cmd.entrySet().stream().map(e -> e.getKey() + "=" + e.getValue()).collect(toList())) .withLabels(map(label, "true")) .withEnv(env.entrySet().stream().map(e -> e.getKey() + "=" + e.getValue()).collect(toList())) .withPortBindings(ports.entrySet().stream().map(e -> new PortBinding(Ports.Binding.bindPort(e.getKey()), ExposedPort.tcp(e.getValue()))).collect(toList())) .exec(); client.startContainerCmd(container.getId()).exec(); client.logContainerCmd(container.getId()).withFollowStream(true).withStdOut(true).withStdErr(true).exec( new LogContainerResultCallback() { public void onNext(Frame frame) { final String msg = new String(frame.getPayload()); log.accept(msg.endsWith("\n") ? msg.substring(0, msg.length() - 1) : msg); } }); } }
@Override protected CreateContainerCmd dockerCommand() { int port = getServicePort(); ExposedPort exposedPort = ExposedPort.tcp(port); Ports portBindings = new Ports(); if (getCluster().isMapPortsToHost()) { portBindings.bind(exposedPort, Ports.Binding.bindPort(port)); } ExposedPort consulHTTPPort = ExposedPort.tcp(ConsulConfig.CONSUL_HTTP_PORT); ExposedPort consulDNSPort = ExposedPort.udp(ConsulConfig.CONSUL_DNS_PORT); return DockerClientFactory.build().createContainerCmd(config.getImageName() + ":" + config.getImageTag()) .withName(getName()) .withCmd("agent", "-server", "-bootstrap", "-client", "0.0.0.0") .withExposedPorts(consulHTTPPort, consulDNSPort) .withPortBindings(portBindings); }
@Override public ExposedPorts deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { List<ExposedPort> exposedPorts = new ArrayList<ExposedPort>(); ObjectCodec oc = jsonParser.getCodec(); JsonNode node = oc.readTree(jsonParser); for (Iterator<Map.Entry<String, JsonNode>> it = node.fields(); it.hasNext();) { Map.Entry<String, JsonNode> field = it.next(); if (!field.getValue().equals(NullNode.getInstance())) { exposedPorts.add(ExposedPort.parse(field.getKey())); } } return new ExposedPorts(exposedPorts.toArray(new ExposedPort[0])); } }
public static Binding binding(DockerClientExecutor executor, String cubeId) { InspectContainerResponse inspectResponse = executor.getDockerClient().inspectContainerCmd(cubeId).exec(); String dockerIp = getDockerServerIp(executor); String inernalIp = null; NetworkSettings networkSettings = inspectResponse.getNetworkSettings(); if (networkSettings != null) { inernalIp = networkSettings.getIpAddress(); } Binding binding = new Binding(dockerIp, inernalIp); HostConfig hostConfig = inspectResponse.getHostConfig(); if (hostConfig.getPortBindings() != null) { for (Entry<ExposedPort, com.github.dockerjava.api.model.Ports.Binding[]> bind : hostConfig.getPortBindings() .getBindings().entrySet()) { com.github.dockerjava.api.model.Ports.Binding[] allBindings = bind.getValue(); for (com.github.dockerjava.api.model.Ports.Binding bindings : allBindings) { binding.addPortBinding(bind.getKey().getPort(), Integer.parseInt(bindings.getHostPortSpec())); } } } else { ContainerConfig connectionConfig = inspectResponse.getConfig(); final ExposedPort[] exposedPorts = connectionConfig.getExposedPorts(); if (exposedPorts != null) { for (ExposedPort port : exposedPorts) { binding.addPortBinding(port.getPort(), -1); } } } return binding; }
@Override public boolean equals(Object obj) { if (obj instanceof ExposedPort) { ExposedPort other = (ExposedPort) obj; return new EqualsBuilder().append(protocol, other.getProtocol()).append(port, other.getPort()).isEquals(); } else { return super.equals(obj); } }