{{/* Container detail page (/containers/detail?id=): fast shell with basic info; stats/disk and logs load asynchronously via blocks container_stats and container_logs (hx-trigger load + 15s refresh). HTMX partial: block container_content */}} {{ template "head" . }}
{{ template "drawer_toggle" }}
{{ block "container_content" . }} {{ template "page_progress" }} {{ template "error_alert" .Data.Error }} {{ template "flash_alerts" .Data }} {{ if .Data.Container }} {{ $c := .Data.Container }}
{{ block "container_stats" . }} {{ if .Data.StatsError }}

stats unavailable: {{ .Data.StatsError }}

{{ else if .Data.StatsLoaded }} {{ $c := .Data.Container }} {{ if $c.stats }}
CPU
{{ $c.stats.cpu_percent }}
of host cores
Memory
{{ $c.stats.mem_percent }}
{{ $c.stats.mem_usage }}
Network I/O
{{ $c.stats.net_io }}
rx / tx
Disk I/O
{{ $c.stats.block_io }}
read / write
PIDs
{{ $c.stats.pids }}
processes
Disk usage
{{ $c.size_rw_human }}
{{ $c.size_root_human }} total
{{ else }}
No live stats - the container is not running. {{ if $c.size_rw_human }} Disk usage {{ $c.size_rw_human }} ({{ $c.size_root_human }} total) {{ end }}
{{ end }} {{ else }}
{{ range $i := list 1 2 3 4 5 6 }}
{{ end }}
{{ end }} {{ end }}
{{ if eq .Data.Container.runtime "kubernetes" }}
{{ block "container_k8s" . }}

Kubernetes status

{{ if .Data.K8sError }} {{ else if .Data.K8s }}
{{ .Data.K8s.phase }} {{ if .Data.K8s.reason }} {{ .Data.K8s.reason }} {{ end }} {{ if .Data.K8s.node }} node {{ .Data.K8s.node }} {{ end }} {{ range .Data.K8s.conditions }} {{ .type }} {{ end }}
{{ if .Data.K8s.message }}

{{ .Data.K8s.message }}

{{ end }} {{ if .Data.K8s.containers }}
{{ range .Data.K8s.containers }} {{ end }}
Container State Restarts Detail
{{ .name }} {{ .state }}{{ if and (eq .state "running") (not .ready) }} (not ready) {{ end }} {{ .restarts }} {{ .reason }} {{ .message }}
{{ end }}

Events

{{ if .Data.K8s.events_error }}

events unavailable: {{ .Data.K8s.events_error }}

{{ else if .Data.K8s.events }}
{{ range .Data.K8s.events }} {{ end }}
{{ .reason }} {{ .message }} {{ if gt .count 1 }} ×{{ .count }} {{ end }} {{ if .last_seen }} {{ template "time_ago" .last_seen }} {{ end }}
{{ else }}

No recent events

{{ end }}
{{ else }}
{{ end }}
{{ end }}
{{ end }}

Overview

Name {{ $c.name }} App {{ if $c.app_path }} {{ $c.app_path }} {{ if $c.app_version }} v{{ $c.app_version }} {{ end }} {{ if and $c.env (ne $c.env "prod") }} {{ $c.env }} {{ end }} {{ else }} - {{ end }} Image {{ $c.image }} {{ if $c.command }} Command {{ $c.command }} {{ end }} {{ if $c.port_bindings }} Ports {{ range $c.port_bindings }} {{ . }} {{ end }} {{ else if $c.ports }} {{ if eq $c.runtime "kubernetes" }} Pod IP {{ else }} Ports {{ end }} {{ $c.ports }} {{ end }} {{ if $c.started_at }} Started {{ template "time_ago" $c.started_at }} {{ end }} Restarts {{ $c.restart_count }} {{ if eq $c.state "exited" }} Exit code {{ $c.exit_code }} {{ end }} Id {{ $c.id }} Runtime {{ $c.runtime }}
{{ if $c.mounts }}

Mounts

{{ len $c.mounts }} mounts
{{ range $c.mounts }} {{ end }}
Type Source Destination Mode
{{ .type }} {{ .source }} {{ .destination }} {{ if .read_write }} rw {{ else }} ro {{ end }}
{{ end }}

Logs

last 500 lines
{{ if eq $c.state "running" }} {{ end }}
{{ end }} {{ end }}
{{ template "sidebar" . }}