diff --git a/includes/html/graphs/application/docker-common.inc.php b/includes/html/graphs/application/docker-common.inc.php
index a524eacddc..e2fcf8b17c 100644
--- a/includes/html/graphs/application/docker-common.inc.php
+++ b/includes/html/graphs/application/docker-common.inc.php
@@ -14,7 +14,7 @@ $smalldescrlen = 25;
if (isset($vars['container'])) {
$containers = [$vars['container']];
} else {
- $containers = Rrd::getRrdApplicationArrays($device, $app->app_id, 'docker');
+ $containers = $app->data['containers'] ?? [];
}
$int = 0;
diff --git a/includes/html/pages/device/apps/docker.inc.php b/includes/html/pages/device/apps/docker.inc.php
index a431264ef3..c3ce049d71 100644
--- a/includes/html/pages/device/apps/docker.inc.php
+++ b/includes/html/pages/device/apps/docker.inc.php
@@ -1,9 +1,5 @@
'device',
'device' => $device['device_id'],
@@ -11,20 +7,25 @@ $link_array = [
'app' => 'docker',
];
-$containers_list = [];
+print_optionbar_start();
-foreach ($domain_list as $label) {
- $container = $label;
+echo generate_link('All Containers', $link_array);
+echo ' | Containers:';
- if ($vars['container'] == $container) {
- $label = '';
+$containers = $app->data['containers'] ?? [];
+sort($containers);
+foreach ($containers as $index => $container) {
+ $label = $vars['container'] == $container
+ ? ''
+ : $container;
+
+ echo generate_link($label, $link_array, ['container' => $container]);
+
+ if ($index < (count($containers) - 1)) {
+ echo ', ';
}
-
- array_push($containers_list, generate_link($label, $link_array, ['container' => $container]));
}
-printf('%s | containers: %s', generate_link('All Containers', $link_array), implode(', ', $containers_list));
-
print_optionbar_end();
$graphs = [
diff --git a/includes/polling/applications/docker.inc.php b/includes/polling/applications/docker.inc.php
index 9af6e613c6..d8f9044b8c 100644
--- a/includes/polling/applications/docker.inc.php
+++ b/includes/polling/applications/docker.inc.php
@@ -46,8 +46,9 @@ $rrd_def = RrdDefinition::make()
->addDataset('mem_limit', 'GAUGE', 0);
$metrics = [];
+$containerNames = [];
foreach ($docker_data as $data) {
- $container = $data['container'];
+ $containerNames[] = $container = $data['container'];
$rrd_name = ['app', $name, $app->app_id, $container];
@@ -63,5 +64,6 @@ foreach ($docker_data as $data) {
$tags = ['name' => $container, 'app_id' => $app->app_id, 'rrd_def' => $rrd_def, 'rrd_name' => $rrd_name];
data_update($device, 'app', $tags, $fields);
}
+$app->data = ['containers' => $containerNames];
update_application($app, $output, $metrics);
diff --git a/tests/data/linux_docker-v1.json b/tests/data/linux_docker-v1.json
index 89b3df7b37..4c6e89c235 100644
--- a/tests/data/linux_docker-v1.json
+++ b/tests/data/linux_docker-v1.json
@@ -22,7 +22,7 @@
"app_state_prev": "UNKNOWN",
"app_status": "",
"app_instance": "",
- "data": null
+ "data": "{\"containers\":[\"foobar_laravel.test_1\",\"foobar_dashboard_1\",\"foobar_meilisearch_1\",\"foobar_mysql_1\",\"foobar_redis_1\"]}"
}
],
"application_metrics": [