From 72ffc711d56d419ae30dd0d7f14deb4a7e7b7f14 Mon Sep 17 00:00:00 2001 From: Alfredo Garcia Date: Thu, 27 Aug 2026 10:47:27 -0500 Subject: [PATCH] fix(docker): add coreutils so MAX_LIFETIME_SECONDS works on Wolfi base scripts/app-start.sh invokes GNU `timeout` with --preserve-status and --foreground when MAX_LIFETIME_SECONDS is set. The Wolfi base only ships BusyBox `timeout`, which rejects those flags, so the server never starts and the container restart-loops. GNU coreutils rode in for free on the old RockyLinux base and was lost in the RockyLinux -> Wolfi switch (PR #423). Add coreutils to the image to restore GNU `timeout`. Verified against the real app-start.sh: the server now starts and runs for the full lifetime. grype shows adding coreutils introduces 0 new CVEs (6 Chainguard-maintained packages, ~10 MB). Reported in Pylon 2657. Fixes ENG-1428. Co-Authored-By: Claude Opus 4.8 (1M context) --- CHANGELOG.md | 6 ++++++ Dockerfile | 2 +- prepline_general/api/__version__.py | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e45c1498..60d5547d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.1.11 + +### Fixes + +- **Restore `MAX_LIFETIME_SECONDS` support in the Docker image**: `scripts/app-start.sh` invokes GNU `timeout` with `--preserve-status` and `--foreground`, flags the Wolfi base's BusyBox `timeout` does not support. Setting `MAX_LIFETIME_SECONDS` therefore caused the server to fail to start and the container to restart-loop. Added `coreutils` to the image so GNU `timeout` is available. This regressed when the base image moved from RockyLinux (which shipped GNU coreutils) to Wolfi. + ## 0.1.10 ### Fixes diff --git a/Dockerfile b/Dockerfile index 460e9896..40ed4cbc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,7 +17,7 @@ USER root RUN apk update && \ apk add libxml2 python-3.12 python-3.12-base glib \ - mesa-gl mesa-libgallium cmake bash libmagic wget git openjpeg \ + mesa-gl mesa-libgallium cmake bash coreutils libmagic wget git openjpeg \ poppler poppler-utils poppler-glib libreoffice tesseract && \ git clone --depth 1 https://github.com/tesseract-ocr/tessdata.git /tmp/tessdata && \ mkdir -p /usr/local/share/tessdata && \ diff --git a/prepline_general/api/__version__.py b/prepline_general/api/__version__.py index f15b0cd2..346129b4 100644 --- a/prepline_general/api/__version__.py +++ b/prepline_general/api/__version__.py @@ -1 +1 @@ -__version__ = "0.1.10" # pragma: no cover +__version__ = "0.1.11" # pragma: no cover