feat: add 7 new features — exec shell, SSE events, compose import, docker resources, resource limits, email notifications, auto-updates
- Container exec/shell via WebSocket + xterm.js (subtle >_ button on cards) - Live dashboard updates via SSE (resource alerts, health changes, update notices) - Docker Compose import with YAML parsing, preview, and dependency-ordered deploy - Volume & network management modal with disk usage overview - CPU/memory resource limits on deploy and live update - Email SMTP notifications (nodemailer) alongside Discord/Telegram/ntfy - Scheduled auto-update scheduler with maintenance windows (daily/weekly/monthly) New deps: ws, js-yaml, nodemailer Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -170,6 +170,18 @@ module.exports = function({ docker, caddy, credentialManager, servicesStateManag
|
||||
containerConfig.HostConfig.CapAdd = processedTemplate.docker.capabilities;
|
||||
}
|
||||
|
||||
// Resource limits (CPU and memory)
|
||||
if (userConfig.resources) {
|
||||
if (userConfig.resources.memory) {
|
||||
const memBytes = Math.round(userConfig.resources.memory * 1024 * 1024); // MB to bytes
|
||||
containerConfig.HostConfig.Memory = memBytes;
|
||||
containerConfig.HostConfig.MemoryReservation = Math.round(memBytes * 0.5); // soft limit = 50%
|
||||
}
|
||||
if (userConfig.resources.cpus) {
|
||||
containerConfig.HostConfig.NanoCpus = Math.round(userConfig.resources.cpus * 1e9);
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
log.info('docker', 'Pulling image', { image: processedTemplate.docker.image });
|
||||
await docker.pull(processedTemplate.docker.image);
|
||||
|
||||
Reference in New Issue
Block a user