From dec05aca227bb119f653da0f1c489e9ae95aec8c Mon Sep 17 00:00:00 2001 From: JamBalaya56562 Date: Mon, 4 May 2026 03:00:03 +0900 Subject: [PATCH] fix: reap HEALTHCHECK zombies by running tini as PID 1 Node.js as PID 1 does not reap children it did not spawn, so the HEALTHCHECK curl fired every 10s accumulates as . Install tini and set it as ENTRYPOINT so any orphaned child is reaped while signals still reach Node. --- Dockerfile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 2d37692cc..7d0150416 100644 --- a/Dockerfile +++ b/Dockerfile @@ -31,7 +31,7 @@ WORKDIR /app # Set production ENV NODE_ENV=production -RUN apt-get update && apt-get install -y curl unzip zip apache2-utils iproute2 rsync git-lfs && git lfs install && rm -rf /var/lib/apt/lists/* +RUN apt-get update && apt-get install -y tini curl unzip zip apache2-utils iproute2 rsync git-lfs && git lfs install && rm -rf /var/lib/apt/lists/* # Copy only the necessary files COPY --from=build /prod/dokploy/.next ./.next @@ -69,5 +69,8 @@ EXPOSE 3000 HEALTHCHECK --interval=30s --timeout=5s --start-period=60s --retries=5 \ CMD curl -fs http://localhost:3000/api/trpc/settings.health || exit 1 +# tini reaps HEALTHCHECK child processes that Node (as PID 1) leaves defunct. +ENTRYPOINT ["/usr/bin/tini", "--"] + # Ejecutar node directamente: pnpm como wrapper queda residente (~100MB RSS) CMD ["sh", "-c", "node -r dotenv/config dist/wait-for-postgres.mjs && node -r dotenv/config dist/migration.mjs && exec node -r dotenv/config dist/server.mjs"]