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 <[email protected]>
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();
}