DockerCommands Class — spring-boot Architecture
Architecture documentation for the DockerCommands class in DockerCli.java from the spring-boot codebase.
Entity Profile
Relationship Graph
Source Code
core/spring-boot-docker-compose/src/main/java/org/springframework/boot/docker/compose/core/DockerCli.java lines 134–196
private static class DockerCommands {
private final DockerCommand dockerCommand;
private final DockerCommand dockerComposeCommand;
DockerCommands(ProcessRunner processRunner) {
this.dockerCommand = getDockerCommand(processRunner);
this.dockerComposeCommand = getDockerComposeCommand(processRunner);
}
private DockerCommand getDockerCommand(ProcessRunner processRunner) {
try {
String version = processRunner.run("docker", "version", "--format", "{{.Client.Version}}");
logger.trace(LogMessage.format("Using docker %s", version));
return new DockerCommand(version, List.of("docker"));
}
catch (ProcessStartException ex) {
throw new DockerProcessStartException("Unable to start docker process. Is docker correctly installed?",
ex);
}
catch (ProcessExitException ex) {
if (ex.getStdErr().contains("docker daemon is not running")
|| ex.getStdErr().contains("Cannot connect to the Docker daemon")) {
throw new DockerNotRunningException(ex.getStdErr(), ex);
}
throw ex;
}
}
private DockerCommand getDockerComposeCommand(ProcessRunner processRunner) {
try {
DockerCliComposeVersionResponse response = DockerJson.deserialize(
processRunner.run("docker", "compose", "version", "--format", "json"),
DockerCliComposeVersionResponse.class);
logger.trace(LogMessage.format("Using Docker Compose %s", response.version()));
return new DockerCommand(response.version(), List.of("docker", "compose"));
}
catch (ProcessExitException ex) {
// Ignore and try docker-compose
}
try {
DockerCliComposeVersionResponse response = DockerJson.deserialize(
processRunner.run("docker-compose", "version", "--format", "json"),
DockerCliComposeVersionResponse.class);
logger.trace(LogMessage.format("Using docker-compose %s", response.version()));
return new DockerCommand(response.version(), List.of("docker-compose"));
}
catch (ProcessStartException ex) {
throw new DockerProcessStartException(
"Unable to start 'docker-compose' process or use 'docker compose'. Is docker correctly installed?",
ex);
}
}
DockerCommand get(Type type) {
return switch (type) {
case DOCKER -> this.dockerCommand;
case DOCKER_COMPOSE -> this.dockerComposeCommand;
};
}
}
Domain
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free