diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c17c2a..c67b705 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ - **Deploy progress UI** — Polling now handles the `deploying` state ("Képek letöltése, konténerek indítása...") and `deploy_error` (shows error message with links to logs). Previous behavior only showed progress after compose-up completed. #### Fixed +- **RestartStack uses `up -d` with env vars** — `RestartStack()` previously used bare `docker compose restart` which only sends SIGTERM+start without re-reading the compose file or injecting env vars from `app.yaml`. Now uses `docker compose up -d` with full env, matching `StartStack()` behavior. This ensures template changes (images, healthchecks) and env var updates are picked up on restart. - **AdventureLog backend healthcheck** — Replaced `wget` (not available in v0.11.0 image) with `python urllib.request`. Also uses `127.0.0.1` instead of `localhost` to avoid IPv6 resolution issues. - **AdventureLog frontend healthcheck** — Changed `localhost` → `127.0.0.1` to fix IPv6 resolution causing connection refused (Node.js only listens on IPv4). - **AdventureLog SECRET_KEY** — Added `SECRET_KEY=${SECRET_KEY}` env var alongside `DJANGO_SECRET_KEY` for v0.11.0 compatibility (Django settings now reads `SECRET_KEY` directly). diff --git a/controller/internal/stacks/manager.go b/controller/internal/stacks/manager.go index 69cb758..8471fc5 100644 --- a/controller/internal/stacks/manager.go +++ b/controller/internal/stacks/manager.go @@ -450,14 +450,18 @@ func (m *Manager) RestartStack(name string) error { m.logger.Printf("[INFO] Restarting stack: %s", name) start := time.Now() dir := filepath.Dir(stack.ComposePath) + env := m.stackEnv(dir) - if _, err := m.composeExec(dir, "restart"); err != nil { + // Use "up -d" instead of bare "restart" so that env vars from app.yaml + // are injected and any template changes (new images, healthchecks) are + // picked up. Plain "docker compose restart" only sends SIGTERM+start + // to existing containers without re-reading the compose file or env. + if _, err := m.composeExecCustomEnv(dir, env, "up", "-d"); err != nil { m.logger.Printf("[ERROR] Stack %s restart failed after %.1fs: %v", name, time.Since(start).Seconds(), err) return fmt.Errorf("restarting stack %s: %w", name, err) } m.logger.Printf("[INFO] Stack %s restarted successfully (took %.1fs)", name, time.Since(start).Seconds()) - env := m.stackEnv(dir) m.logPostStartStatus(name, dir, env) return m.RefreshStatus() }