diff --git a/plugins/dynamix.docker.manager/DockerContainers.page b/plugins/dynamix.docker.manager/DockerContainers.page index 11337c7e8..6686db52d 100644 --- a/plugins/dynamix.docker.manager/DockerContainers.page +++ b/plugins/dynamix.docker.manager/DockerContainers.page @@ -17,6 +17,9 @@ Markdown="false" * all copies or substantial portions of the Software. */ ?> +/dev/null 2>&1 &"); +?> @@ -42,8 +46,8 @@ tbody > tr.sortable:hover{cursor:move}
- - + +
ApplicationVersionNetworkPort Mappings (App to Host)Volume Mappings (App to Host)AutostartLog
ApplicationVersionNetworkPort Mappings (App to Host)Volume Mappings (App to Host)CPU loadMemory loadAutostartLog
@@ -112,6 +116,15 @@ function loadlist(update) { if (!update) $('input#updateAll').hide(); }); } +var watchDocker = new NchanSubscriber('/sub/dockerload', /^((?!chrome|android).)*safari/i.test(navigator.userAgent) ? {subscriber:'longpoll'} : {}); +watchDocker.on('message', function(data) { + data = data.split('\n'); + for (var i=0,row; row=data[i]; i++) { + var id = row.split(' '); + $('#cpu-'+id[0]).css('width',id[1]).text(id[1].replace('.','')); + $('#mem-'+id[0]).css('width',id[2]).text(id[2].replace('.','')); + } +}); $(function() { $('.advancedview').switchButton({labels_placement:'left', on_label:'Advanced View', off_label:'Basic View', checked:$.cookie('docker_listview_mode')=='advanced'}); $('.advancedview').change(function() { @@ -121,5 +134,6 @@ $(function() { listview(); }); $.post('/plugins/dynamix.docker.manager/include/DockerUpdate.php',{},function(u){loadlist(u);}); + watchDocker.start(); }); diff --git a/plugins/dynamix.docker.manager/include/DockerContainers.php b/plugins/dynamix.docker.manager/include/DockerContainers.php index 49cb5495b..0f51dee7f 100644 --- a/plugins/dynamix.docker.manager/include/DockerContainers.php +++ b/plugins/dynamix.docker.manager/include/DockerContainers.php @@ -39,7 +39,6 @@ $docker = ['var docker=[];']; $null = '0.0.0.0'; $menu = []; -$n = 0; foreach ($containers as $ct) { $name = $ct['Name']; $id = $ct['Id']; @@ -49,10 +48,11 @@ foreach ($containers as $ct) { $is_autostart = $info['autostart'] ? 'true':'false'; $updateStatus = $info['updated']=='true'||$info['updated']=='undef' ? 'true':'false'; $template = $info['template']; + $shell = $info['shell']; $webGui = html_entity_decode($info['url']); $support = html_entity_decode($info['Support']); $project = html_entity_decode($info['Project']); - $menu[] = sprintf("addDockerContainerContext('%s','%s','%s',%s,%s,%s,%s,'%s','%s','%s','%s');", addslashes($name), addslashes($ct['ImageId']), addslashes($template), $running, $paused, $updateStatus, $is_autostart, addslashes($webGui), $id, addslashes($support), addslashes($project)); + $menu[] = sprintf("addDockerContainerContext('%s','%s','%s',%s,%s,%s,%s,'%s','%s','%s','%s','%s');", addslashes($name), addslashes($ct['ImageId']), addslashes($template), $running, $paused, $updateStatus, $is_autostart, addslashes($webGui), $shell, $id, addslashes($support), addslashes($project)); $docker[] = "docker.push({name:'$name',id:'$id',state:$running,pause:$paused,update:'$updateStatus'});"; $shape = $running ? ($paused ? 'pause' : 'play') : 'square'; $status = $running ? ($paused ? 'paused' : 'started') : 'stopped'; @@ -100,6 +100,8 @@ foreach ($containers as $ct) { echo "{$ct['NetworkMode']}"; echo "".implode('
',$ports)."
"; echo "".implode('
',$paths)."
"; + echo "
-
"; + echo "
-
"; echo ""; echo "
"; echo htmlspecialchars(str_replace('Up','Uptime',$ct['Status']))."
Created ".htmlspecialchars($ct['Created'])."
"; @@ -115,7 +117,7 @@ foreach ($images as $image) { echo ""; echo "(orphan image)
Image ID: $id
"; echo "
".implode('
',array_map('htmlspecialchars',$image['Tags']))."
"; - echo ""; + echo ""; echo "
Created ".htmlspecialchars($image['Created'])."
"; } echo "\0".implode($menu).implode($docker); diff --git a/plugins/dynamix.docker.manager/scripts/docker_load b/plugins/dynamix.docker.manager/scripts/docker_load new file mode 100644 index 000000000..46045d301 --- /dev/null +++ b/plugins/dynamix.docker.manager/scripts/docker_load @@ -0,0 +1,6 @@ +#!/bin/bash + +while :; do + curl --data "$(docker stats --no-stream --format='{{.Container}} {{.CPUPerc}} {{.MemPerc}}')" --unix-socket /var/run/nginx.socket http://localhost/pub/dockerload?buffer_length=0 >/dev/null 2>&1 + sleep 1 +done &