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
commit 052b278fe0cd429b6ed4fe320c7ca229f2b61fa1 Author: Marat Gubaidullin <[email protected]> AuthorDate: Wed Sep 6 14:11:14 2023 -0400 Karavan in Docker for #817 --- karavan-web/karavan-app/pom.xml | 4 +++ .../karavan-app/src/main/docker/Dockerfile.jvm | 12 ++++----- .../camel/karavan/docker/DockerEventListener.java | 14 ++-------- .../camel/karavan/docker/DockerForKaravan.java | 31 +++++++++++++++------- .../apache/camel/karavan/docker/DockerService.java | 15 ++++++----- .../camel/karavan/kubernetes/PodEventHandler.java | 3 +-- .../apache/camel/karavan/service/CamelService.java | 10 +------ .../apache/camel/karavan/service/EventService.java | 3 --- .../apache/camel/karavan/service/GiteaService.java | 13 ++++++--- .../camel/karavan/service/ProjectService.java | 19 +++++++------ .../src/main/resources/application.properties | 12 ++++++--- .../snippets/camel-main-builder-script-docker.sh | 1 - .../camel-main-docker-application.properties | 1 + 13 files changed, 71 insertions(+), 67 deletions(-) diff --git a/karavan-web/karavan-app/pom.xml b/karavan-web/karavan-app/pom.xml index 47e6dae3..fbf4dcad 100644 --- a/karavan-web/karavan-app/pom.xml +++ b/karavan-web/karavan-app/pom.xml @@ -131,6 +131,10 @@ <groupId>io.quarkus</groupId> <artifactId>quarkus-container-image-docker</artifactId> </dependency> + <dependency> + <groupId>io.quarkus</groupId> + <artifactId>quarkus-container-image-jib</artifactId> + </dependency> <dependency> <groupId>io.quarkiverse.quinoa</groupId> <artifactId>quarkus-quinoa</artifactId> diff --git a/karavan-web/karavan-app/src/main/docker/Dockerfile.jvm b/karavan-web/karavan-app/src/main/docker/Dockerfile.jvm index 4f7e95a5..12684d5d 100644 --- a/karavan-web/karavan-app/src/main/docker/Dockerfile.jvm +++ b/karavan-web/karavan-app/src/main/docker/Dockerfile.jvm @@ -1,9 +1,7 @@ -FROM registry.access.redhat.com/ubi8/openjdk-17:1.16 -ENV LANGUAGE='en_US:en' -COPY --chown=185 target/*-runner.jar /deployments/quarkus-run.jar -EXPOSE 8080 -USER 185 +FROM eclipse-temurin:17.0.8.1_1-jdk +RUN mkdir /opt/app +COPY target/*-runner.jar /opt/app/karavan.jar ENV JAVA_OPTS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager" -ENV JAVA_APP_JAR="/deployments/quarkus-run.jar" -ENTRYPOINT [ "/opt/jboss/container/java/run/run-java.sh" ] +EXPOSE 8080 +CMD ["java", "-jar", "/opt/app/karavan.jar"] diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerEventListener.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerEventListener.java index 0af06f22..6dda84c0 100644 --- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerEventListener.java +++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerEventListener.java @@ -22,20 +22,11 @@ import static org.apache.camel.karavan.shared.Constants.*; @ApplicationScoped public class DockerEventListener implements ResultCallback<Event> { - @ConfigProperty(name = "karavan.image-registry") - String registry; - @ConfigProperty(name = "karavan.image-group") - String group; - @ConfigProperty(name = "karavan.image-registry-username") - Optional<String> username; - @ConfigProperty(name = "karavan.image-registry-password") - Optional<String> password; - @Inject DockerService dockerService; @Inject - EventBus eventBus; + DockerForKaravan dockerForKaravan; @Inject InfinispanService infinispanService; @@ -67,8 +58,7 @@ public class DockerEventListener implements ResultCallback<Event> { && Objects.equals(container.getLabels().get(LABEL_TYPE), ContainerStatus.ContainerType.build.name())) { String tag = container.getLabels().get(LABEL_TAG); String projectId = container.getLabels().get(LABEL_PROJECT_ID); - String image = registry + "/" + group + "/" + projectId + ":" + tag; - dockerService.pullImage(image); + dockerForKaravan.syncImage(projectId, tag); } } } 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 41d15c7f..017c133f 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 @@ -22,11 +22,13 @@ import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; import org.apache.camel.karavan.docker.model.DockerComposeService; import org.apache.camel.karavan.infinispan.model.ContainerStatus; +import org.apache.camel.karavan.shared.ConfigService; import org.eclipse.microprofile.config.inject.ConfigProperty; import org.jboss.logging.Logger; import java.util.List; import java.util.Map; +import java.util.Optional; import static org.apache.camel.karavan.shared.Constants.*; @@ -38,10 +40,12 @@ public class DockerForKaravan { @ConfigProperty(name = "karavan.devmode.image") String devmodeImage; - @ConfigProperty(name = "karavan.infinispan.username") - String infinispanUsername; - @ConfigProperty(name = "karavan.infinispan.password") - String infinispanPassword; + @ConfigProperty(name = "karavan.image-registry-install-registry") + boolean installRegistry; + @ConfigProperty(name = "karavan.image-registry") + String registry; + @ConfigProperty(name = "karavan.image-group") + String group; @Inject DockerService dockerService; @@ -65,29 +69,38 @@ public class DockerForKaravan { return dockerService.createContainer(projectId, devmodeImage, env, ports, healthCheck, Map.of(LABEL_TYPE, ContainerStatus.ContainerType.devmode.name(), LABEL_PROJECT_ID, projectId), - Map.of()); + Map.of(), null); } - public void runBuildProject(String projectId, String script, Map<String, String> files, List<String> env, String tag) throws Exception { + public void runBuildProject(String projectId, String script, Map<String, String> files, List<String> env, Map<String, String> volumes, String tag) throws Exception { dockerService.deleteContainer(projectId + BUILDER_SUFFIX); - Container c = createBuildContainer(projectId, env, tag); + Container c = createBuildContainer(projectId, env, volumes, tag); dockerService.copyFiles(c.getId(), "/code", files); dockerService.copyExecFile(c.getId(), "/karavan", "build.sh", script); dockerService.runContainer(projectId); } - protected Container createBuildContainer(String projectId, List<String> env, String tag) throws InterruptedException { + protected Container createBuildContainer(String projectId, List<String> env, Map<String, String> volumes, String tag) throws InterruptedException { LOGGER.infof("Starting Build Container for %s ", projectId); return dockerService.createContainer(projectId + BUILDER_SUFFIX, devmodeImage, env, Map.of(), new HealthCheck(), Map.of(LABEL_TYPE, ContainerStatus.ContainerType.build.name(), LABEL_PROJECT_ID, projectId, LABEL_TAG, tag), - Map.of(), "/karavan/build.sh"); + volumes, null,"/karavan/build.sh"); } public void createDevserviceContainer(DockerComposeService dockerComposeService) throws InterruptedException { LOGGER.infof("DevService starting for ", dockerComposeService.getContainer_name()); dockerService.createContainerFromCompose(dockerComposeService, ContainerStatus.ContainerType.devservice); } + + public void syncImage(String projectId, String tag) throws InterruptedException { + String registryUrl = registry; + if (ConfigService.inDocker() && installRegistry) { + registryUrl = "localhost:5555"; + } + String image = registryUrl + "/" + group + "/" + projectId + ":" + tag; + dockerService.pullImage(image); + } } 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 fcbee5a4..d1c717fa 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 @@ -45,6 +45,7 @@ import java.time.Instant; import java.util.*; import java.util.stream.Collectors; +import static org.apache.camel.karavan.shared.Constants.LABEL_PROJECT_ID; import static org.apache.camel.karavan.shared.Constants.LABEL_TYPE; @ApplicationScoped @@ -152,7 +153,7 @@ public class DockerService extends DockerServiceUtils { LOGGER.infof("Compose Service started for %s", compose.getContainer_name()); return createContainer(compose.getContainer_name(), compose.getImage(), - env, compose.getPortsMap(), healthCheck, Map.of(LABEL_TYPE, type.name()), Map.of()); + env, compose.getPortsMap(), healthCheck, Map.of(LABEL_TYPE, type.name()), Map.of(), NETWORK_NAME); } else { LOGGER.info("Compose Service already exists: " + containers.get(0).getId()); @@ -162,7 +163,7 @@ 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... command) throws InterruptedException { + Map<String, String> volumes, String network, String... command) throws InterruptedException { List<Container> containers = getDockerClient().listContainersCmd().withShowAll(true).withNameFilter(List.of(name)).exec(); if (containers.size() == 0) { pullImage(image); @@ -181,11 +182,13 @@ public class DockerService extends DockerServiceUtils { if (command.length > 0) { createContainerCmd.withCmd(command); } - + if (Objects.equals(labels.get(LABEL_PROJECT_ID), ContainerStatus.ContainerType.build.name())) { + mounts.add(new Mount().withType(MountType.BIND).withSource("/var/run/docker.sock").withTarget("/var/run/docker.sock")); + } createContainerCmd.withHostConfig(new HostConfig() .withPortBindings(portBindings) .withMounts(mounts) - .withNetworkMode(NETWORK_NAME)); + .withNetworkMode(network != null ? network : NETWORK_NAME)); CreateContainerResponse response = createContainerCmd.exec(); LOGGER.info("Container created: " + response.getId()); @@ -338,9 +341,9 @@ public class DockerService extends DockerServiceUtils { List<String> tags = images.stream() .map(i -> Arrays.stream(i.getRepoTags()).collect(Collectors.toList())) .flatMap(Collection::stream) - .collect(Collectors.toList()); + .toList(); - if (!images.stream().filter(i -> tags.contains(image)).findFirst().isPresent()) { + if (!images.stream().anyMatch(i -> tags.contains(image))) { ResultCallback.Adapter<PullResponseItem> pull = getDockerClient().pullImageCmd(image).start().awaitCompletion(); } } diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/PodEventHandler.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/PodEventHandler.java index 3a684ef9..bdd9a7cd 100644 --- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/PodEventHandler.java +++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/kubernetes/PodEventHandler.java @@ -19,7 +19,6 @@ import static org.apache.camel.karavan.service.CodeService.DEFAULT_CONTAINER_RES import static org.apache.camel.karavan.shared.Constants.LABEL_PROJECT_ID; import static org.apache.camel.karavan.shared.Constants.RELOAD_TRY_COUNT; import static org.apache.camel.karavan.shared.EventType.CONTAINER_STATUS; -import static org.apache.camel.karavan.shared.EventType.DEVMODE_CONTAINER_READY; public class PodEventHandler implements ResourceEventHandler<Pod> { @@ -60,7 +59,7 @@ public class PodEventHandler implements ResourceEventHandler<Pod> { LABEL_PROJECT_ID, ps.getProjectId(), RELOAD_TRY_COUNT, 1 ); - eventBus.publish(DEVMODE_CONTAINER_READY, JsonObject.mapFrom(message)); +// eventBus.publish(DEVMODE_CONTAINER_READY, JsonObject.mapFrom(message)); } } } diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/CamelService.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/CamelService.java index 44783740..ef96461b 100644 --- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/CamelService.java +++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/CamelService.java @@ -129,8 +129,7 @@ public class CamelService { if (ConfigService.inKubernetes()) { return "http://" + containerName + "." + kubernetesService.getNamespace() + ".svc.cluster.local"; } else if (ConfigService.inDocker()) { - Integer port = projectService.getProjectPort(containerName); - return "http://" + containerName + ":" + port; + return "http://" + containerName + ":8080"; } else { Integer port = projectService.getProjectPort(containerName); return "http://localhost:" + port; @@ -155,13 +154,6 @@ public class CamelService { public void collectCamelStatuses(JsonObject data) { CamelStatusRequest dms = data.mapTo(CamelStatusRequest.class); String projectId = dms.getProjectId(); - if (infinispanService.getCamelStatus(projectId, environment, CamelStatus.Name.context.name()) == null) { - Map<String, Object> message = Map.of( - LABEL_PROJECT_ID, projectId, - RELOAD_TRY_COUNT, 1 - ); - eventBus.publish(DEVMODE_CONTAINER_READY, JsonObject.mapFrom(message)); - } Arrays.stream(CamelStatus.Name.values()).forEach(statusName -> { String containerName = dms.getContainerName(); String status = getCamelStatus(containerName, statusName); diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/EventService.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/EventService.java index b1a9ee10..eb7a1302 100644 --- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/EventService.java +++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/EventService.java @@ -40,9 +40,6 @@ public class EventService { } private void saveContainerStatus(ContainerStatus newStatus, ContainerStatus oldStatus) { - if (newStatus.getProjectId().equals("demo")) { - System.out.println(("oldStatus.getFinished = " + Objects.isNull(oldStatus.getFinished()))); - } if ("exited".equalsIgnoreCase(newStatus.getState()) && Objects.isNull(oldStatus.getFinished())) { newStatus.setFinished(Instant.now().toString()); } else if ("exited".equalsIgnoreCase(newStatus.getState()) && Objects.nonNull(oldStatus.getFinished())) { diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/GiteaService.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/GiteaService.java index 1930be7c..469986e3 100644 --- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/GiteaService.java +++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/GiteaService.java @@ -24,6 +24,7 @@ import io.vertx.mutiny.ext.web.client.WebClient; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; import org.apache.camel.karavan.infinispan.model.GitConfig; +import org.apache.camel.karavan.shared.ConfigService; import org.eclipse.microprofile.faulttolerance.Retry; import org.jboss.logging.Logger; @@ -55,7 +56,7 @@ public class GiteaService { @Retry(maxRetries = 100, delay = 2000) public void install() throws Exception { LOGGER.info("Install Gitea"); - HttpResponse<Buffer> result = getWebClient().postAbs("http://localhost:3000").timeout(1000) + HttpResponse<Buffer> result = getWebClient().postAbs(getGiteaBaseUrl()).timeout(1000) .putHeader("Content-Type", "application/x-www-form-urlencoded") .sendBuffer(Buffer.buffer( "db_type=sqlite3&db_host=localhost%3A3306&db_user=root&db_passwd=&db_name=gitea" + @@ -78,7 +79,7 @@ public class GiteaService { public void createRepository() throws Exception { LOGGER.info("Creating Gitea Repository"); String token = generateToken(); - HttpResponse<Buffer> result = getWebClient().postAbs("http://localhost:3000/api/v1/user/repos").timeout(500) + HttpResponse<Buffer> result = getWebClient().postAbs(getGiteaBaseUrl() + "/api/v1/user/repos").timeout(500) .putHeader("Content-Type", "application/json") .bearerTokenAuthentication(token) .sendJsonObject(new JsonObject(Map.of( @@ -109,7 +110,7 @@ public class GiteaService { } LOGGER.info("Creating Gitea User Token"); GitConfig config = gitService.getGitConfig(); - HttpResponse<Buffer> result = getWebClient().postAbs("http://localhost:3000/api/v1/users/" + config.getUsername() + "/tokens").timeout(500) + HttpResponse<Buffer> result = getWebClient().postAbs(getGiteaBaseUrl() + "/api/v1/users/" + config.getUsername() + "/tokens").timeout(500) .putHeader("Content-Type", "application/json") .putHeader("accept", "application/json") .basicAuthentication(config.getUsername(), config.getPassword()) @@ -133,7 +134,7 @@ public class GiteaService { LOGGER.info("Deleting Gitea User Token"); GitConfig config = gitService.getGitConfig(); HttpResponse<Buffer> result = getWebClient() - .deleteAbs("http://localhost:3000/api/v1/users/" + config.getUsername() + "/tokens/" + token) + .deleteAbs(getGiteaBaseUrl() + "/api/v1/users/" + config.getUsername() + "/tokens/" + token) .timeout(500) .putHeader("Content-Type", "application/json") .putHeader("accept", "application/json") @@ -143,4 +144,8 @@ public class GiteaService { LOGGER.info("Deleted Gitea User Token"); } } + + private String getGiteaBaseUrl(){ + return ConfigService.inDocker() ? "http://gitea:3000" : "http://localhost:3000"; + } } \ No newline at end of file diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java index d3489247..00123f52 100644 --- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java +++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ProjectService.java @@ -16,7 +16,6 @@ */ package org.apache.camel.karavan.service; -import io.smallrye.mutiny.tuples.Tuple2; import io.vertx.core.json.JsonObject; import io.vertx.mutiny.core.eventbus.EventBus; import org.apache.camel.karavan.docker.DockerForKaravan; @@ -59,11 +58,8 @@ public class ProjectService implements HealthCheck { @ConfigProperty(name = "karavan.environment") String environment; - @ConfigProperty(name = "karavan.git-install-gitea") - boolean installGitea; - - @ConfigProperty(name = "karavan.image-registry-install-registry") - boolean installRegistry; + @ConfigProperty(name = "karavan.maven.cache") + Optional<String> mavenCache; @ConfigProperty(name = "karavan.image-registry") String registry; @@ -143,7 +139,10 @@ public class ProjectService implements HealthCheck { String tag = Instant.now().toString().substring(0, 19).replace(":", "-"); List<String> env = getEnvForBuild(project, tag); - dockerForKaravan.runBuildProject(project.getProjectId(), script, files, env, tag); + Map<String, String> volumes = mavenCache + .map(s -> Map.of(s, "/root/.m2")) + .orElseGet(Map::of); + dockerForKaravan.runBuildProject(project.getProjectId(), script, files, env, volumes, tag); return project.getProjectId(); } } @@ -151,17 +150,17 @@ public class ProjectService implements HealthCheck { private List<String> getEnvForBuild(Project project, String tag) { GitConfig gitConfig = gitService.getGitConfig(); List<String> env = List.of( - "GIT_REPOSITORY=" + (installGitea ? gitConfig.getUri().replace("localhost", "gitea") : gitConfig.getUri()), + "GIT_REPOSITORY=" + gitConfig.getUri(), "GIT_USERNAME=" + gitConfig.getUsername(), "GIT_PASSWORD=" + gitConfig.getPassword(), "GIT_BRANCH=" + gitConfig.getBranch(), "PROJECT_ID=" + project.getProjectId(), - "IMAGE_REGISTRY=" + (installRegistry ? "registry:5000" : registry), + "IMAGE_REGISTRY=" + registry, "IMAGE_REGISTRY_USERNAME=" + username, "IMAGE_REGISTRY_PASSWORD=" + password, "IMAGE_GROUP=" + group, + "JBANG_REPO=~/.m2", "TAG=" + tag - ); return env; } diff --git a/karavan-web/karavan-app/src/main/resources/application.properties b/karavan-web/karavan-app/src/main/resources/application.properties index d8b07ccf..6200868d 100644 --- a/karavan-web/karavan-app/src/main/resources/application.properties +++ b/karavan-web/karavan-app/src/main/resources/application.properties @@ -7,16 +7,17 @@ karavan.camel.status.interval=2s karavan.container.status.interval=2s karavan.container.statistics.interval=10s karavan.devmode.image=ghcr.io/apache/camel-karavan-devmode:4.0.0-RC2 +karavan.maven.cache= # Git repository Configuration -karavan.git-repository=http://localhost:3000/karavan/karavan.git +karavan.git-repository=http://gitea:3000/karavan/karavan.git karavan.git-username=karavan karavan.git-password=karavan karavan.git-branch=main karavan.git-install-gitea=true # Image registry configuration -karavan.image-registry=localhost:5555 +karavan.image-registry=registry:5000 karavan.image-group=karavan karavan.image-registry-username= karavan.image-registry-password= @@ -28,7 +29,7 @@ karavan.infinispan.port=11222:11222 # Infinispan connection config karavan.infinispan.username=admin karavan.infinispan.password=karavan -karavan.infinispan.hosts=localhost:11222 +karavan.infinispan.hosts=infinispan:11222 quarkus.infinispan-client.devservices.enabled=false quarkus.infinispan-client.devservices.service-name=infinispan @@ -101,8 +102,11 @@ quarkus.http.enable-compression=true quarkus.log.level=INFO quarkus.banner.enabled=false quarkus.package.type=uber-jar -quarkus.docker.dockerfile-jvm-path=src/main/docker/Dockerfile.distroless +quarkus.docker.dockerfile-jvm-path=src/main/docker/Dockerfile.jvm +#quarkus.docker.dockerfile-jvm-path=src/main/docker/Dockerfile.distroless quarkus.container-image.builder=docker +#quarkus.jib.base-jvm-image=eclipse-temurin:17.0.8.1_1-jdk +#quarkus.jib.ports=8080 quarkus.qute.strict-rendering=false quarkus.qute.property-not-found-strategy=output-original diff --git a/karavan-web/karavan-app/src/main/resources/snippets/camel-main-builder-script-docker.sh b/karavan-web/karavan-app/src/main/resources/snippets/camel-main-builder-script-docker.sh index 207520cc..037632f8 100644 --- a/karavan-web/karavan-app/src/main/resources/snippets/camel-main-builder-script-docker.sh +++ b/karavan-web/karavan-app/src/main/resources/snippets/camel-main-builder-script-docker.sh @@ -13,7 +13,6 @@ then replacer=http://${GIT_USERNAME}:${GIT_PASSWORD}@ prefix=http:// url="${GIT_REPOSITORY/$prefix/$replacer}" - echo url git clone --depth 1 --branch ${GIT_BRANCH} $url ${CHECKOUT_DIR} else git clone --depth 1 --branch ${GIT_BRANCH} ${GIT_REPOSITORY} ${CHECKOUT_DIR} diff --git a/karavan-web/karavan-app/src/main/resources/snippets/camel-main-docker-application.properties b/karavan-web/karavan-app/src/main/resources/snippets/camel-main-docker-application.properties index 775e3033..5048638c 100644 --- a/karavan-web/karavan-app/src/main/resources/snippets/camel-main-docker-application.properties +++ b/karavan-web/karavan-app/src/main/resources/snippets/camel-main-docker-application.properties @@ -11,3 +11,4 @@ camel.server.enabled=true camel.server.healthCheckEnabled=true camel.server.devConsoleEnabled=true jkube.version=1.13.1 +jib.from.image=gcr.io/distroless/java17@sha256:3a4ea21bd7b412b8b6ae61313b39337d8f03bb6844013810e8e4625d8c765edb
