Merge branch 'arthur.wambst/tests' of git.la-banquise.fr:banquise/intra-back into arthur.wambst/tests
This commit is contained in:
commit
821b7554b2
@ -0,0 +1,15 @@
|
|||||||
|
package fr.la_banquise.backend.rest.response;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class DockerResponse {
|
||||||
|
public String name;
|
||||||
|
public String state;
|
||||||
|
public String image;
|
||||||
|
public List<String> publicPorts;
|
||||||
|
}
|
||||||
@ -19,11 +19,14 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import fr.la_banquise.backend.rest.response.DockerResponse;
|
||||||
|
|
||||||
@ApplicationScoped
|
@ApplicationScoped
|
||||||
public class DockerService {
|
public class DockerService {
|
||||||
|
|
||||||
@Inject DockerClient dockerClient;
|
@Inject
|
||||||
|
DockerClient dockerClient;
|
||||||
|
|
||||||
public String createAndStartNginx() {
|
public String createAndStartNginx() {
|
||||||
ExposedPort tcp80 = ExposedPort.tcp(80);
|
ExposedPort tcp80 = ExposedPort.tcp(80);
|
||||||
@ -31,16 +34,14 @@ public class DockerService {
|
|||||||
Ports portBindings = new Ports();
|
Ports portBindings = new Ports();
|
||||||
portBindings.bind(tcp80, Ports.Binding.bindPort(8081));
|
portBindings.bind(tcp80, Ports.Binding.bindPort(8081));
|
||||||
|
|
||||||
HostConfig hostConfig =
|
HostConfig hostConfig = HostConfig.newHostConfig().withPortBindings(portBindings);
|
||||||
HostConfig.newHostConfig().withPortBindings(portBindings);
|
|
||||||
Map<String, String> labels = new HashMap<>();
|
Map<String, String> labels = new HashMap<>();
|
||||||
labels.put("test", "banquise");
|
labels.put("test", "banquise");
|
||||||
labels.put("environment", "development");
|
labels.put("environment", "development");
|
||||||
labels.put("version", "1.0");
|
labels.put("version", "1.0");
|
||||||
labels.put("created-by", "java-docker-api");
|
labels.put("created-by", "java-docker-api");
|
||||||
|
|
||||||
CreateContainerResponse container =
|
CreateContainerResponse container = dockerClient.createContainerCmd("nginx:latest")
|
||||||
dockerClient.createContainerCmd("nginx:latest")
|
|
||||||
.withName("my-nginx")
|
.withName("my-nginx")
|
||||||
.withLabels(labels)
|
.withLabels(labels)
|
||||||
.withExposedPorts(tcp80)
|
.withExposedPorts(tcp80)
|
||||||
@ -51,118 +52,120 @@ public class DockerService {
|
|||||||
return container.getId();
|
return container.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
public String listAllContainers() {
|
* public String listAllContainers() {
|
||||||
StringBuilder json = new StringBuilder();
|
* StringBuilder json = new StringBuilder();
|
||||||
List<Container> containers = dockerClient.listContainersCmd()
|
* List<Container> containers = dockerClient.listContainersCmd()
|
||||||
.withShowAll(true)
|
* .withShowAll(true)
|
||||||
.exec();
|
* .exec();
|
||||||
|
*
|
||||||
json.append("[");
|
* json.append("[");
|
||||||
|
*
|
||||||
for (int i = 0; i < containers.size(); i++) {
|
* for (int i = 0; i < containers.size(); i++) {
|
||||||
Container container = containers.get(i);
|
* Container container = containers.get(i);
|
||||||
|
*
|
||||||
json.append("{");
|
* json.append("{");
|
||||||
json.append("\"name\":\"").append(container.getNames()[0].substring(1)).append("\",");
|
* json.append("\"name\":\"").append(container.getNames()[0].substring(1)).
|
||||||
json.append("\"id\":\"").append(container.getId()).append("\",");
|
* append("\",");
|
||||||
json.append("\"image\":\"").append(container.getImage()).append("\",");
|
* json.append("\"id\":\"").append(container.getId()).append("\",");
|
||||||
json.append("\"status\":\"").append(container.getStatus()).append("\",");
|
* json.append("\"image\":\"").append(container.getImage()).append("\",");
|
||||||
|
* json.append("\"status\":\"").append(container.getStatus()).append("\",");
|
||||||
// Ports
|
*
|
||||||
InspectContainerResponse inspectResponse =
|
* // Ports
|
||||||
dockerClient.inspectContainerCmd(container.getId()).exec();
|
* InspectContainerResponse inspectResponse =
|
||||||
json.append("\"ports\":[");
|
* dockerClient.inspectContainerCmd(container.getId()).exec();
|
||||||
if (container.getPorts() != null && container.getPorts().length > 0) {
|
* json.append("\"ports\":[");
|
||||||
for (int j = 0; j < .length; j+=2) {
|
* if (container.getPorts() != null && container.getPorts().length > 0) {
|
||||||
ContainerPort port = container.getPorts()[j];
|
* for (int j = 0; j < .length; j+=2) {
|
||||||
json.append("[\"");
|
* ContainerPort port = container.getPorts()[j];
|
||||||
json.append(port.getPrivatePort()).append("->").append(port.getPublicPort()).append("/"+port.getType()+"\",\"");
|
* json.append("[\"");
|
||||||
json.append(port.getIp()).append(",").append((container.getPorts()[j+1]).getIp());
|
* json.append(port.getPrivatePort()).append("->").append(port.getPublicPort()).
|
||||||
if (port.getType() != null) {
|
* append("/"+port.getType()+"\",\"");
|
||||||
json.append("/").append(port.getType());
|
* json.append(port.getIp()).append(",").append((container.getPorts()[j+1]).
|
||||||
}
|
* getIp());
|
||||||
if (port.getPublicPort() != null) {
|
* if (port.getType() != null) {
|
||||||
json.append("->").append(port.getPublicPort());
|
* json.append("/").append(port.getType());
|
||||||
}*
|
* }
|
||||||
json.append("\"]");
|
* if (port.getPublicPort() != null) {
|
||||||
if (j < container.getPorts().length - 2) {
|
* json.append("->").append(port.getPublicPort());
|
||||||
json.append(",");
|
* }*
|
||||||
}
|
* json.append("\"]");
|
||||||
}
|
* if (j < container.getPorts().length - 2) {
|
||||||
}
|
* json.append(",");
|
||||||
json.append("]");
|
* }
|
||||||
|
* }
|
||||||
// Ports
|
* }
|
||||||
String ports = "[]";
|
* json.append("]");
|
||||||
try {
|
*
|
||||||
InspectContainerResponse inspectResponse =
|
* // Ports
|
||||||
dockerClient.inspectContainerCmd(container.getId()).exec(); if
|
* String ports = "[]";
|
||||||
(inspectResponse.getConfig().getExposedPorts() != null) { ports =
|
* try {
|
||||||
inspectResponse.getConfig().getExposedPorts().toString();
|
* InspectContainerResponse inspectResponse =
|
||||||
}
|
* dockerClient.inspectContainerCmd(container.getId()).exec(); if
|
||||||
} catch (Exception e) {
|
* (inspectResponse.getConfig().getExposedPorts() != null) { ports =
|
||||||
// Fallback vers les ports runtime si inspect échoue
|
* inspectResponse.getConfig().getExposedPorts().toString();
|
||||||
if (container.getPorts() != null && container.getPorts().length
|
* }
|
||||||
> 0) { ports = java.util.Arrays.toString(container.getPorts());
|
* } catch (Exception e) {
|
||||||
}
|
* // Fallback vers les ports runtime si inspect échoue
|
||||||
}
|
* if (container.getPorts() != null && container.getPorts().length
|
||||||
json.append("\"ports\":\"").append(ports).append("\"");
|
* > 0) { ports = java.util.Arrays.toString(container.getPorts());
|
||||||
json.append("}");
|
* }
|
||||||
if (i < containers.size() - 1) {
|
* }
|
||||||
json.append(",");
|
* json.append("\"ports\":\"").append(ports).append("\"");
|
||||||
}
|
* json.append("}");
|
||||||
|
* if (i < containers.size() - 1) {
|
||||||
json.append("}");
|
* json.append(",");
|
||||||
|
* }
|
||||||
if (i < containers.size() - 1) {
|
*
|
||||||
json.append(",");
|
* json.append("}");
|
||||||
}
|
*
|
||||||
}
|
* if (i < containers.size() - 1) {
|
||||||
|
* json.append(",");
|
||||||
json.append("]");
|
* }
|
||||||
return json.toString();
|
* }
|
||||||
}
|
*
|
||||||
public String listAllContainers() {
|
* json.append("]");
|
||||||
StringBuilder json = new StringBuilder();
|
* return json.toString();
|
||||||
List<Container> containers = dockerClient.listContainersCmd()
|
* }
|
||||||
.withShowAll(true)
|
* public String listAllContainers() {
|
||||||
.exec();
|
* StringBuilder json = new StringBuilder();
|
||||||
json.append("[");
|
* List<Container> containers = dockerClient.listContainersCmd()
|
||||||
for (int i = 0; i < containers.size(); i++) {
|
* .withShowAll(true)
|
||||||
Container container = containers.get(i);
|
* .exec();
|
||||||
// Ports
|
* json.append("[");
|
||||||
List<String> portsList = new ArrayList<>();
|
* for (int i = 0; i < containers.size(); i++) {
|
||||||
try {
|
* Container container = containers.get(i);
|
||||||
var inspectResponse =
|
* // Ports
|
||||||
dockerClient.inspectContainerCmd(container.getId()).exec(); if
|
* List<String> portsList = new ArrayList<>();
|
||||||
(inspectResponse.getConfig().getExposedPorts() != null) { var exposedPorts =
|
* try {
|
||||||
inspectResponse.getConfig().getExposedPorts(); int count = 0; for (var port
|
* var inspectResponse =
|
||||||
: exposedPorts) { if (count > 0) portsList.append(",");
|
* dockerClient.inspectContainerCmd(container.getId()).exec(); if
|
||||||
portsList.append(String.format("\"%s\"",
|
* (inspectResponse.getConfig().getExposedPorts() != null) { var exposedPorts =
|
||||||
port.toString())); count = 1;
|
* inspectResponse.getConfig().getExposedPorts(); int count = 0; for (var port
|
||||||
}
|
* : exposedPorts) { if (count > 0) portsList.append(",");
|
||||||
portsList.append("]");
|
* portsList.append(String.format("\"%s\"",
|
||||||
ports = portsList.toString();
|
* port.toString())); count = 1;
|
||||||
}
|
* }
|
||||||
} catch (Exception e) {
|
* portsList.append("]");
|
||||||
// Fallback vers les ports runtime si inspect échoue
|
* ports = portsList.toString();
|
||||||
if (container.getPorts() != null && container.getPorts().length
|
* }
|
||||||
> 0) { ports = java.util.Arrays.toString(container.getPorts());
|
* } catch (Exception e) {
|
||||||
}
|
* // Fallback vers les ports runtime si inspect échoue
|
||||||
}
|
* if (container.getPorts() != null && container.getPorts().length
|
||||||
|
* > 0) { ports = java.util.Arrays.toString(container.getPorts());
|
||||||
//json.append(containerJson);
|
* }
|
||||||
|
* }
|
||||||
if (i < containers.size() - 1) {
|
*
|
||||||
json.append(",");
|
* //json.append(containerJson);
|
||||||
}
|
*
|
||||||
}
|
* if (i < containers.size() - 1) {
|
||||||
json.append("]");
|
* json.append(",");
|
||||||
return json.toString();
|
* }
|
||||||
}*/
|
* }
|
||||||
|
* json.append("]");
|
||||||
|
* return json.toString();
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
|
||||||
////////////////////
|
////////////////////
|
||||||
public String createContainer(String name, int port) {
|
public String createContainer(String name, int port) {
|
||||||
@ -171,8 +174,7 @@ public class DockerService {
|
|||||||
Ports portBindings = new Ports();
|
Ports portBindings = new Ports();
|
||||||
portBindings.bind(tcpSsh, Ports.Binding.bindPort(port));
|
portBindings.bind(tcpSsh, Ports.Binding.bindPort(port));
|
||||||
|
|
||||||
HostConfig hostConfig =
|
HostConfig hostConfig = HostConfig.newHostConfig().withPortBindings(portBindings);
|
||||||
HostConfig.newHostConfig().withPortBindings(portBindings);
|
|
||||||
Map<String, String> labels = new HashMap<>();
|
Map<String, String> labels = new HashMap<>();
|
||||||
labels.put("test", "banquise");
|
labels.put("test", "banquise");
|
||||||
labels.put("environment", "development");
|
labels.put("environment", "development");
|
||||||
@ -180,32 +182,30 @@ public class DockerService {
|
|||||||
labels.put("created-by", "java-docker-api");
|
labels.put("created-by", "java-docker-api");
|
||||||
|
|
||||||
dockerClient.buildImageCmd()
|
dockerClient.buildImageCmd()
|
||||||
.withDockerfile(new File("./dockerfile/Dockerfile"))
|
.withDockerfile(new File("./dockerfile/Dockerfile"))
|
||||||
.withBaseDirectory(new File("./dockerfile"))
|
.withBaseDirectory(new File("./dockerfile"))
|
||||||
.withTags(Set.of("ji-python:latest"))
|
.withTags(Set.of("ji-python:latest"))
|
||||||
.exec(new BuildImageResultCallback())
|
.exec(new BuildImageResultCallback())
|
||||||
.awaitImageId();
|
.awaitImageId();
|
||||||
|
|
||||||
CreateContainerResponse container =
|
CreateContainerResponse container = dockerClient.createContainerCmd("ji-python:latest")
|
||||||
dockerClient.createContainerCmd("ji-python:latest")
|
|
||||||
.withName(name)
|
.withName(name)
|
||||||
.withLabels(labels)
|
.withLabels(labels)
|
||||||
.withExposedPorts(tcpSsh)
|
.withExposedPorts(tcpSsh)
|
||||||
.withHostConfig(hostConfig)
|
.withHostConfig(hostConfig)
|
||||||
.withEnv(
|
.withEnv(
|
||||||
"SUDO_ACCESS=false",
|
"SUDO_ACCESS=false",
|
||||||
"PASSWORD_ACCESS=true",
|
"PASSWORD_ACCESS=true",
|
||||||
"USER_NAME=test", // TODO: CHANGE THIS
|
"USER_NAME=test", // TODO: CHANGE THIS
|
||||||
"USER_PASSWORD=test" // AND this also oc
|
"USER_PASSWORD=test" // AND this also oc
|
||||||
)
|
)
|
||||||
.exec();
|
.exec();
|
||||||
|
|
||||||
return container.getId();
|
return container.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
public InspectContainerResponse.ContainerState getStatusContainer(String name) {
|
public InspectContainerResponse.ContainerState getStatusContainer(String name) {
|
||||||
InspectContainerResponse container =
|
InspectContainerResponse container = dockerClient.inspectContainerCmd(name).exec();
|
||||||
dockerClient.inspectContainerCmd(name).exec();
|
|
||||||
return container.getState();
|
return container.getState();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -235,11 +235,21 @@ public class DockerService {
|
|||||||
dockerClient.stopContainerCmd(containerId).exec();
|
dockerClient.stopContainerCmd(containerId).exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Container> listAllContainers() {
|
public List<DockerResponse> listAllContainers() {
|
||||||
return dockerClient.listContainersCmd()
|
List<Container> containers = dockerClient.listContainersCmd()
|
||||||
.withShowAll(true)
|
.withShowAll(true)
|
||||||
.exec();
|
.exec();
|
||||||
|
return containers.stream().map(this::toDockerResponse).toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private DockerResponse toDockerResponse(Container container) {
|
||||||
|
List<String> portsList = new ArrayList<>();
|
||||||
|
for (var port : container.getPorts()) {
|
||||||
|
portsList.add(String.format("%s:%s", port.getPrivatePort(), port.getPublicPort()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return new DockerResponse(container.getNames()[0].substring(1), container.getStatus(), container.getImage(),
|
||||||
|
portsList);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user