Fix puzzle-relay crash loop: install pcntl/posix extensions

Workerman requires pcntl and posix on Linux; without them the relay
printed "Please install pcntl extension" and exited immediately,
Docker kept restarting it, and nginx's DNS lookups for
dmtools-puzzle-relay intermittently failed whenever it happened to be
down mid-restart - the "could not be resolved" errors were a symptom
of this crash loop, not a separate networking problem. Local dev never
hit this because Workerman's Windows code path doesn't need either
extension.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Frank
2026-09-12 13:49:07 +02:00
co-authored by Claude Sonnet 5
parent de908d547f
commit 9ba4197bfd
+7 -1
View File
@@ -6,11 +6,17 @@ RUN apk add --no-cache bash git unzip
# right system libraries itself, builds, and cleans up - much less fragile # right system libraries itself, builds, and cleans up - much less fragile
# than hand-maintaining apk build deps. # than hand-maintaining apk build deps.
COPY --from=mlocati/php-extension-installer:latest /usr/bin/install-php-extensions /usr/local/bin/ COPY --from=mlocati/php-extension-installer:latest /usr/bin/install-php-extensions /usr/local/bin/
# pcntl and posix aren't needed by php-fpm itself, but the puzzle-relay
# service (docker-compose.yml) runs this same image as a Workerman process,
# and Workerman requires both on Linux (its Windows-only code path, the one
# used in local dev, doesn't need them - which is why this was missed there).
RUN install-php-extensions \ RUN install-php-extensions \
intl \ intl \
pdo_mysql \ pdo_mysql \
opcache \ opcache \
zip zip \
pcntl \
posix
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer COPY --from=composer:2 /usr/bin/composer /usr/bin/composer