diff --git a/emhttp/plugins/dynamix.docker.manager/include/DockerClient.php b/emhttp/plugins/dynamix.docker.manager/include/DockerClient.php index f380d6121..b985c1be5 100644 --- a/emhttp/plugins/dynamix.docker.manager/include/DockerClient.php +++ b/emhttp/plugins/dynamix.docker.manager/include/DockerClient.php @@ -929,6 +929,9 @@ class DockerClient { $c['Created'] = $this->humanTiming($ct['Created']); $c['NetworkMode'] = $ct['HostConfig']['NetworkMode']; $c['Manager'] = $info['Config']['Labels']['net.unraid.docker.managed'] ?? false; + if ($c['Manager'] == 'composeman') { + $c['ComposeProject'] = $info['Config']['Labels']['com.docker.compose.project']; + } [$net, $id] = array_pad(explode(':',$c['NetworkMode']),2,''); $c['CPUset'] = $info['HostConfig']['CpusetCpus']; $c['BaseImage'] = $ct['Labels']['BASEIMAGE'] ?? false; diff --git a/emhttp/plugins/dynamix.docker.manager/include/DockerContainers.php b/emhttp/plugins/dynamix.docker.manager/include/DockerContainers.php index 55a326dd6..172bc8f1c 100644 --- a/emhttp/plugins/dynamix.docker.manager/include/DockerContainers.php +++ b/emhttp/plugins/dynamix.docker.manager/include/DockerContainers.php @@ -69,7 +69,8 @@ foreach ($containers as $ct) { $running = $info['running'] ? 1 : 0; $paused = $info['paused'] ? 1 : 0; $is_autostart = $info['autostart'] ? 'true':'false'; - $updateStatus = substr($ct['NetworkMode'],-4)==':???' ? 2 : ($info['updated']=='true' ? 0 : ($info['updated']=='false' ? 1 : 3)); + $composestack = isset($ct['ComposeProject']) ? $ct['ComposeProject'] : ''; + $updateStatus = substr($ct['NetworkMode'], -4) == ':???' ? 2 : ($info['updated'] == 'true' ? 0 : ($info['updated'] == 'false' ? 1 : 3)); $template = $info['template']??''; $shell = $info['shell']??''; $webGui = html_entity_decode($info['url']??''); @@ -83,7 +84,7 @@ foreach ($containers as $ct) { $shape = $running ? ($paused ? 'pause' : 'play') : 'square'; $status = $running ? ($paused ? 'paused' : 'started') : 'stopped'; $color = $status=='started' ? 'green-text' : ($status=='paused' ? 'orange-text' : 'red-text'); - $update = $updateStatus==1 ? 'blue-text' : ''; + $update = $updateStatus==1 && !empty($compose) ? 'blue-text' : ''; $icon = $info['icon'] ?: '/plugins/dynamix.docker.manager/images/question.png'; $image = substr($icon,-4)=='.png' ? "" : (substr($icon,0,5)=='icon-' ? "" : ""); $wait = var_split($autostart[array_search($name,$names)]??'',1); @@ -119,12 +120,12 @@ foreach ($containers as $ct) { $paths[] = sprintf('%s%s', htmlspecialchars($container_path), $access_mode=='ro'?'long-arrow-left':'arrows-h', htmlspecialchars($host_path)); } echo ""; - if ($template) { + if ($template && empty($composestack)) { $appname = "".htmlspecialchars($name).""; } else { $appname = htmlspecialchars($name); } - echo "$image$appname
"._($status)."
"; + echo "$image$appname
"._($status).(!empty($composestack) ? '
Compose Stack: ' . $composestack : '')."
"; echo "
"._('Container ID').": $id
"; if ($ct['BaseImage']) echo "".htmlspecialchars($ct['BaseImage'])."
"; echo _('By').": "; @@ -137,28 +138,47 @@ foreach ($containers as $ct) { } echo "
"; switch ($updateStatus) { - case 0: - echo " "._('up-to-date').""; - if ($ct['Manager'] == "dockerman") - echo "
"._('force update')."
"; - break; + case 0: + if ($ct['Manager'] == "dockerman") { + echo " "._('up-to-date').""; + echo "
"._('force update')."
"; + } elseif (!empty($composestack)) { + echo "
Compose
"; + echo " "._('up-to-date').""; + } else { + echo "
3rd Party
"; + echo " "._('up-to-date').""; + } + break; case 1: echo "
"._('update ready')."
"; - if ($ct['Manager'] == "dockerman") - echo " "._('apply update').""; - else + if ($ct['Manager'] == "dockerman") { + echo " "._('apply update').""; + } elseif (!empty($composestack)) { + echo "
Compose
"; echo " "._('update available').""; + } else { + echo "
3rd Party
"; + echo " "._('update available').""; + } break; case 2: echo "
"._('rebuild ready')."
"; echo " "._('rebuilding').""; break; default: - echo " "._('not available').""; - if ($ct['Manager'] == "dockerman") + if ($ct['Manager'] == "dockerman") { + echo " "._('not available').""; echo "
"._('force update')."
"; + } elseif (!empty($composestack)) { + echo "
Compose
"; + echo " "._('not available').""; + } else { + echo "
3rd Party
"; + echo " "._('not available').""; + } break; - } + } echo "
".compress(_($version),12,0)."
"; echo " ".implode('
',$networks)."
"; echo " ".implode('
',$network_ips)."
"; @@ -167,7 +187,15 @@ foreach ($containers as $ct) { echo "".implode('
',$paths)."
"; echo "0%
"; echo "
0 / 0"; - echo ""; + if (empty($composestack)) { + if ($ct['Manager'] == "dockerman") { + echo ""; + } else { + echo " 3rd Party"; + } + } else { + echo " Compose"; + } echo ""; echo "
".htmlspecialchars(str_replace('Up',_('Uptime').':',my_lang_log($ct['Status'])))."
"._('Created').": ".htmlspecialchars(my_lang_time($ct['Created']))."
"; }