This is an automated email from the ASF dual-hosted git repository. marat pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-karavan.git
The following commit(s) were added to refs/heads/main by this push: new 3c9a7b3b Support restart policy for #885 3c9a7b3b is described below commit 3c9a7b3b93f7f6219da4d2b074d0fcee84da864d Author: Marat Gubaidullin <ma...@talismancloud.io> AuthorDate: Wed Sep 13 17:08:43 2023 -0400 Support restart policy for #885 --- .../apache/camel/karavan/docker/DockerForKaravan.java | 5 +++-- .../org/apache/camel/karavan/docker/DockerService.java | 17 +++++++++++------ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForKaravan.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForKaravan.java index 4d5ad276..2789033c 100644 --- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForKaravan.java +++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerForKaravan.java @@ -18,6 +18,7 @@ package org.apache.camel.karavan.docker; import com.github.dockerjava.api.model.Container; import com.github.dockerjava.api.model.HealthCheck; +import com.github.dockerjava.api.model.RestartPolicy; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; import org.apache.camel.karavan.infinispan.model.ContainerStatus; @@ -69,7 +70,7 @@ public class DockerForKaravan { return dockerService.createContainer(projectId, devmodeImage, env, ports, healthCheck, Map.of(LABEL_TYPE, ContainerStatus.ContainerType.devmode.name(), LABEL_PROJECT_ID, projectId), - volumes, null); + volumes, null, RestartPolicy.noRestart()); } @@ -92,7 +93,7 @@ public class DockerForKaravan { LABEL_PROJECT_ID, project.getProjectId(), LABEL_TAG, tag ), - volumes, null,"/karavan/build.sh"); + volumes, null,RestartPolicy.noRestart(), "/karavan/build.sh"); } private Map<String,String> getMavenVolumes(){ diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java index f003c099..00eb083e 100644 --- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java +++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java @@ -156,8 +156,15 @@ public class DockerService extends DockerServiceUtils { LOGGER.infof("Compose Service started for %s", compose.getContainer_name()); + RestartPolicy restartPolicy = RestartPolicy.noRestart(); + if (Objects.equals(compose.getRestart(), RestartPolicy.onFailureRestart(10).getName())) { + restartPolicy = RestartPolicy.onFailureRestart(10); + } else if (Objects.equals(compose.getRestart(), RestartPolicy.alwaysRestart().getName())) { + restartPolicy = RestartPolicy.alwaysRestart(); + } + return createContainer(compose.getContainer_name(), compose.getImage(), - env, compose.getPortsMap(), healthCheck, Map.of(LABEL_TYPE, type.name()), Map.of(), NETWORK_NAME); + env, compose.getPortsMap(), healthCheck, Map.of(LABEL_TYPE, type.name()), Map.of(), NETWORK_NAME, restartPolicy); } else { LOGGER.info("Compose Service already exists: " + containers.get(0).getId()); @@ -172,7 +179,8 @@ public class DockerService extends DockerServiceUtils { public Container createContainer(String name, String image, List<String> env, Map<Integer, Integer> ports, HealthCheck healthCheck, Map<String, String> labels, - Map<String, String> volumes, String network, String... command) throws InterruptedException { + Map<String, String> volumes, String network, RestartPolicy restartPolicy, + String... command) throws InterruptedException { List<Container> containers = findContainer(name); if (containers.size() == 0) { pullImage(image); @@ -195,6 +203,7 @@ public class DockerService extends DockerServiceUtils { mounts.add(new Mount().withType(MountType.BIND).withSource("/var/run/docker.sock").withTarget("/var/run/docker.sock")); } createContainerCmd.withHostConfig(new HostConfig() + .withRestartPolicy(restartPolicy) .withPortBindings(portBindings) .withMounts(mounts) .withNetworkMode(network != null ? network : NETWORK_NAME)); @@ -251,10 +260,6 @@ public class DockerService extends DockerServiceUtils { .exec(); } - public void execStart(String id) throws InterruptedException { - getDockerClient().execStartCmd(id).start().awaitCompletion(); - } - public void execStart(String id, ResultCallback.Adapter<Frame> callBack) throws InterruptedException { dockerClient.execStartCmd(id).exec(callBack).awaitCompletion(); }