Hugging8N / Dockerfile
somratpro's picture
refactor: replace UptimeRobot keep-alive implementation with Cloudflare Workers based solution
5636339
FROM node:22-slim
ARG N8N_VERSION=latest
ENV DEBIAN_FRONTEND=noninteractive \
N8N_PORT=5678 \
HF_HUB_DISABLE_PROGRESS_BARS=1 \
PYTHONUNBUFFERED=1 \
PIP_ROOT_USER_ACTION=ignore
RUN apt-get update && apt-get install -y -q --no-install-recommends \
ca-certificates \
curl \
git \
jq \
python3 \
python3-pip \
python3-venv \
sqlite3 \
tini \
&& pip3 install -q --no-cache-dir --break-system-packages huggingface_hub \
&& npm install -g --loglevel=error n8n@${N8N_VERSION} \
&& rm -rf /var/lib/apt/lists/*
RUN mkdir -p /home/node/app /home/node/.n8n && \
chmod 700 /home/node/.n8n && \
chown -R node:node /home/node
WORKDIR /home/node/app
COPY --chown=node:node health-server.js /home/node/app/health-server.js
COPY --chown=node:node cloudflare-proxy.js /opt/cloudflare-proxy.js
COPY --chown=node:node cloudflare-proxy-setup.py /home/node/app/cloudflare-proxy-setup.py
# Set NODE_OPTIONS after preload scripts are copied
ENV NODE_OPTIONS="--require /opt/cloudflare-proxy.js"
COPY --chown=node:node n8n-sync.py /home/node/app/n8n-sync.py
COPY --chown=node:node cloudflare-keepalive-setup.py /home/node/app/cloudflare-keepalive-setup.py
COPY --chown=node:node start.sh /home/node/app/start.sh
RUN chmod +x /home/node/app/start.sh /home/node/app/cloudflare-keepalive-setup.py /home/node/app/cloudflare-proxy-setup.py
USER node
EXPOSE 7861
HEALTHCHECK --interval=30s --timeout=5s --start-period=90s \
CMD curl -fsS http://localhost:7861/health || exit 1
ENTRYPOINT ["/usr/bin/tini", "--"]
CMD ["/home/node/app/start.sh"]