KLEINUILTIES-WEBAPP/Dockerfile
Slim Uiltjies App c4086f9e23 Fix Dockerfile healthcheck
- Add curl explicitly (wget in Alpine has IPv6/connection quirks)
- Use 127.0.0.1 instead of localhost to avoid IPv6 races
- Extend start-period to 60s (Node cold-start can take 30-60s)
- More retries (8 instead of 3) for resilience during first deploy
2026-08-08 09:31:01 +02:00

34 lines
1 KiB
Docker

FROM node:20-alpine
# Install curl explicitly for the healthcheck (wget in alpine has had IPv6/connection-resolved quirks)
RUN apk add --no-cache curl
# Create app directory and data directory for the persistent volume
WORKDIR /app
RUN mkdir -p /data
# Install dependencies (cached layer)
COPY package.json ./
RUN npm install --omit=dev --no-audit --no-fund && npm cache clean --force
# Copy the rest of the app
COPY . .
# Defaults — override these in Coolify's Environment section
ENV PORT=3000 \
DATA_FILE=/data/data.json \
NODE_ENV=production
EXPOSE 3000
# Healthcheck for Coolify / orchestrators
# Use 127.0.0.1 (IPv4 explicit) to avoid IPv6 connection-refused races.
# Generous start-period because Node + Alpine cold-start can take ~30-60s on first deploy.
HEALTHCHECK --interval=20s --timeout=5s --start-period=60s --retries=8 \
CMD curl -fsS http://127.0.0.1:3000/api/health || exit 1
# Run as non-root for safety
RUN addgroup -S app && adduser -S app -G app && chown -R app:app /app /data
USER app
CMD ["node", "server.js"]