| 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 |
|
|
| |
| 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"] |
|
|