diff --git a/dashcaddy-api/constants.js b/dashcaddy-api/constants.js index 02ce109..92739e9 100644 --- a/dashcaddy-api/constants.js +++ b/dashcaddy-api/constants.js @@ -102,7 +102,7 @@ const DNS_RECORD_TYPES = ['A', 'AAAA', 'CNAME', 'MX', 'TXT', 'NS', 'SRV', 'PTR', // ── Docker ────────────────────────────────────────────────────── const DOCKER = { CONTAINER_PREFIX: 'sami-', - TIMEOUT: 30000, // 30s — timeout for docker pull/create operations + TIMEOUT: 120000, // 120s — timeout for docker pull/create operations LOG_CONFIG: { Type: 'json-file', Config: { 'max-size': '10m', 'max-file': '3' } // 30MB max per container diff --git a/dashcaddy-api/routes/apps/deploy.js b/dashcaddy-api/routes/apps/deploy.js index a6d47c8..1956000 100644 --- a/dashcaddy-api/routes/apps/deploy.js +++ b/dashcaddy-api/routes/apps/deploy.js @@ -306,7 +306,7 @@ module.exports = function({ docker, caddy, credentialManager, servicesStateManag } else { containerId = await deployContainer(appId, config, template); log.info('deploy', 'Container deployed', { containerId }); - await helpers.waitForHealthCheck(containerId, template.healthCheck, config.port || template.defaultPort); + await helpers.waitForHealthCheck(containerId, template.healthCheck, config.port || template.defaultPort, 30); log.info('deploy', 'Container is healthy', { containerId }); } diff --git a/dashcaddy-api/routes/apps/helpers.js b/dashcaddy-api/routes/apps/helpers.js index d3fb962..f0000b2 100644 --- a/dashcaddy-api/routes/apps/helpers.js +++ b/dashcaddy-api/routes/apps/helpers.js @@ -379,9 +379,12 @@ module.exports = function({ docker, caddy, credentialManager, servicesStateManag return content.slice(0, endIdx) + injection + content.slice(endIdx); }); - if (!result.success) { + if (!result.success && result.error !== 'No changes to apply') { throw new Error(`[DC-303] Failed to add subpath config for ${subdomain}: ${result.error}`); } + if (result.error === 'No changes to apply') { + log.info('caddy', 'Subpath config already exists, reusing', { subdomain }); + } } /** Remove a subpath config block from between its markers in the Caddyfile. */