Skip to content

Commit

Permalink
Docker-build fails to detect podman
Browse files Browse the repository at this point in the history
Fixes #41085
  • Loading branch information
edeandrea committed Jun 10, 2024
1 parent 974f4b9 commit f909acb
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import java.util.List;

import io.quarkus.deployment.util.ContainerRuntimeUtil;
import io.quarkus.deployment.util.ContainerRuntimeUtil.ContainerRuntime;

public class IsDockerWorking extends IsContainerRuntimeWorking {
public IsDockerWorking() {
Expand All @@ -19,7 +20,8 @@ public IsDockerWorking(boolean silent) {
private static class DockerBinaryStrategy implements Strategy {
@Override
public Result get() {
if (ContainerRuntimeUtil.detectContainerRuntime(false) != UNAVAILABLE) {
if (ContainerRuntimeUtil.detectContainerRuntime(false,
ContainerRuntime.DOCKER, ContainerRuntime.PODMAN) != UNAVAILABLE) {
return Result.AVAILABLE;
} else {
return Result.UNKNOWN;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import java.util.List;

import io.quarkus.deployment.util.ContainerRuntimeUtil;
import io.quarkus.deployment.util.ContainerRuntimeUtil.ContainerRuntime;

public class IsPodmanWorking extends IsContainerRuntimeWorking {
public IsPodmanWorking() {
Expand All @@ -21,7 +22,11 @@ public IsPodmanWorking(boolean silent) {
private static class PodmanBinaryStrategy implements Strategy {
@Override
public Result get() {
return (ContainerRuntimeUtil.detectContainerRuntime(false) != UNAVAILABLE) ? Result.AVAILABLE : Result.UNKNOWN;
if (ContainerRuntimeUtil.detectContainerRuntime(false, ContainerRuntime.PODMAN) != UNAVAILABLE) {
return Result.AVAILABLE;
} else {
return Result.UNKNOWN;
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.function.Predicate;
Expand Down Expand Up @@ -42,21 +43,20 @@ private ContainerRuntimeUtil() {
* @return a fully resolved {@link ContainerRuntime} indicating if Docker or Podman is available and in rootless mode or not
* @throws IllegalStateException if no container runtime was found to build the image
*/
public static ContainerRuntime detectContainerRuntime() {
return detectContainerRuntime(true);
}

public static ContainerRuntime detectContainerRuntime(List<ContainerRuntime> orderToCheckRuntimes) {
public static ContainerRuntime detectContainerRuntime(ContainerRuntime... orderToCheckRuntimes) {
return detectContainerRuntime(true, orderToCheckRuntimes);
}

public static ContainerRuntime detectContainerRuntime(boolean required) {
return detectContainerRuntime(required, List.of(ContainerRuntime.DOCKER, ContainerRuntime.PODMAN));
public static ContainerRuntime detectContainerRuntime(boolean required, ContainerRuntime... orderToCheckRuntimes) {
return detectContainerRuntime(
required,
((orderToCheckRuntimes != null) && (orderToCheckRuntimes.length > 0)) ? Arrays.asList(orderToCheckRuntimes)
: List.of(ContainerRuntime.DOCKER, ContainerRuntime.PODMAN));
}

public static ContainerRuntime detectContainerRuntime(boolean required, List<ContainerRuntime> orderToCheckRuntimes) {
ContainerRuntime containerRuntime = loadContainerRuntimeFromSystemProperty();
if (containerRuntime != null) {
if ((containerRuntime != null) && orderToCheckRuntimes.contains(containerRuntime)) {
return containerRuntime;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,7 @@ protected RuntimeException containerRuntimeException(String executableName, Stri

private String getExecutableName(C config, ContainerRuntime containerRuntime) {
return config.executableName()
.orElseGet(() -> detectContainerRuntime(List.of(containerRuntime)).getExecutableName());
.orElseGet(() -> detectContainerRuntime(containerRuntime).getExecutableName());
}

private DockerfilePaths getDockerfilePaths(C config,
Expand Down

0 comments on commit f909acb

Please sign in to comment.