in karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerComposeConverter.java [73:119]
private static DockerComposeService convertToDockerComposeService(String name, JsonObject service) {
if (service.containsKey(ENVIRONMENT) && service.getValue(ENVIRONMENT) instanceof JsonArray) {
JsonObject env = new JsonObject();
service.getJsonArray(ENVIRONMENT).forEach(o -> {
String[] kv = o.toString().split("=");
if (kv.length == 2) {
env.put(kv[0], kv[1]);
}
});
service.put(ENVIRONMENT, env);
}
if (service.containsKey(LABELS) && service.getValue(LABELS) instanceof JsonArray) {
JsonObject env = new JsonObject();
service.getJsonArray(LABELS).forEach(o -> {
String[] kv = o.toString().split("=");
if (kv.length == 2) {
env.put(kv[0], kv[1]);
}
});
service.put(LABELS, env);
}
if (service.containsKey(VOLUMES) && service.getValue(VOLUMES) instanceof JsonArray) {
JsonArray volumes = new JsonArray();
JsonArray yamlVolumes = service.getJsonArray(VOLUMES);
yamlVolumes.forEach(o -> {
if (o instanceof JsonObject) {
volumes.add(o);
} else if (o instanceof String) {
var parts = ((String) o).split(":");
if (parts.length == 2) {
var part0 = parts[0];
var type = (part0.startsWith("/") || part0.startsWith("~") || part0.startsWith("./")) ? BIND : VOLUME;
volumes.add(JsonObject.mapFrom(new DockerComposeVolume(type.name().toLowerCase(), parts[0], parts[1])));
} else if (parts.length == 1) {
volumes.add(JsonObject.mapFrom(new DockerComposeVolume(VOLUME.name().toLowerCase(), null, parts[0])));
}
}
});
service.put(VOLUMES, volumes);
}
DockerComposeService ds = service.mapTo(DockerComposeService.class);
if (ds.getContainer_name() == null) {
ds.setContainer_name(name);
}
return ds;
}