Files
blog/Dockerfile

34 lines
810 B
Docker

FROM node:22-alpine
WORKDIR /app
# Dynamic build arguments & environment variables
ARG SITE_DOMAIN
ARG SITE_URL
ARG PORT=8080
ENV SITE_DOMAIN=$SITE_DOMAIN
ENV SITE_URL=$SITE_URL
ENV PORT=$PORT
ENV NODE_ENV=production
# Install dependencies
COPY package*.json ./
RUN npm ci
# Copy application source files
COPY . .
RUN chmod +x /app/entrypoint.sh
# Pre-compile baseline static assets
RUN npm run build
# Expose web server port dynamically
EXPOSE ${PORT}
# Native container healthcheck probing IPv4 loopback
HEALTHCHECK --interval=30s --timeout=5s --start-period=3s --retries=3 \
CMD node -e "fetch('http://127.0.0.1:' + (process.env.PORT || 8080) + '/healthz').then(r => process.exit(r.ok ? 0 : 1)).catch(() => process.exit(1))"
# Serve site using dynamic entrypoint
ENTRYPOINT ["/app/entrypoint.sh"]