Sign inSign up

successage/n8n-runner

By successage

•Updated 3 months ago

n8n runner

Image
Integration & delivery
0

2.0K

successage/n8n-runner repository overview

Dockerfile:

FROM alpine:latest AS alpine
FROM n8nio/runners:latest

# Copy apk and its deps from Alpine
COPY --from=alpine /sbin/apk /sbin/apk
COPY --from=alpine /usr/lib/libapk.so* /usr/lib/

USER root

# ==========================================
# 0. 系统基础环境
# ==========================================
RUN sed -i 's/^#\(.*community\)/\1/g' /etc/apk/repositories
RUN apk update

# -----------------------------------------------------------
# 关键修改:安装 build-base 和 cmake
# 虽然我们改为用系统包装 opencv,但保留这些工具可以防止其他包编译失败
# -----------------------------------------------------------
RUN apk add --no-cache ffmpeg libstdc++ libffi-dev build-base cmake python3-dev

# ==========================================
# 1. JavaScript 模块
# ==========================================
WORKDIR /opt/runners/task-runner-javascript
RUN pnpm add lodash
RUN pnpm add uuid
RUN pnpm add qs
RUN pnpm add axios
RUN pnpm add cheerio
RUN pnpm add form-data
RUN pnpm add xml2js
RUN pnpm add moment
RUN pnpm add luxon
RUN pnpm add date-fns

# ==========================================
# 2. Python 模块
# ==========================================
WORKDIR /opt/runners/task-runner-python

RUN uv pip install requests
RUN uv pip install pytz
RUN uv pip install pyyaml
RUN uv pip install beautifulsoup4
RUN uv pip install lxml

# -----------------------------------------------------------
# 重点修改:用系统包 (apk) 替代 pip 安装
# -----------------------------------------------------------
# Numpy, Pandas, OpenCV 在 Alpine 上编译极其困难且慢。
# 我们直接安装 Alpine 官方提供的预编译版本。
# Python 会自动在系统路径 (/usr/lib/python...) 找到它们。
RUN apk add --no-cache py3-numpy py3-pandas py3-opencv

# -----------------------------------------------------------
# 安装 MoviePy
# -----------------------------------------------------------
# 注意:MoviePy 依赖 numpy。由于我们上面用 apk 安装了 numpy,
# 为了防止 uv 又去重新下载编译 numpy,我们加上 --system 参数或忽略依赖
# 但为了稳妥,直接安装 moviepy,如果它要编译依赖,我们已经装了 build-base
RUN uv pip install moviepy

RUN uv pip install pandas

RUN uv pip install opencv-python --verbose

#RUN uv pip install opencv-python-headless

RUN uv pip install pymongo
RUN uv pip install redis
RUN uv pip install hiredis
RUN uv pip install ffmpeg
# ==========================================
# 3. 收尾
# ==========================================
WORKDIR /
COPY n8n-task-runners.json /etc/n8n-task-runners.json
USER runner

n8n-task-runners.json:

{
  "task-runners": [
    {
      "runner-type": "javascript",
      "workdir": "/home/runner",
      "command": "/usr/local/bin/node",
      "args": [
        "--disallow-code-generation-from-strings",
        "--disable-proto=delete",
        "/opt/runners/task-runner-javascript/dist/start.js"
      ],
      "health-check-server-port": "5681",
      "allowed-env": [
        "PATH",
        "GENERIC_TIMEZONE",
        "NODE_OPTIONS",
        "N8N_RUNNERS_AUTO_SHUTDOWN_TIMEOUT",
        "N8N_RUNNERS_TASK_TIMEOUT",
        "N8N_RUNNERS_MAX_CONCURRENCY",
        "N8N_SENTRY_DSN",
        "N8N_VERSION",
        "ENVIRONMENT",
        "DEPLOYMENT_NAME"
      ],
      "env-overrides": {
        "NODE_FUNCTION_ALLOW_BUILTIN": "crypto,util,url,querystring,buffer,path,zlib,os,events,stream",
        "NODE_FUNCTION_ALLOW_EXTERNAL": "lodash,axios,moment,luxon,date-fns,uuid,cheerio,qs,xml2js,form-data",
        "N8N_RUNNERS_HEALTH_CHECK_SERVER_HOST": "0.0.0.0"
      }
    },
    {
      "runner-type": "python",
      "workdir": "/home/runner",
      "command": "/opt/runners/task-runner-python/.venv/bin/python",
      "args": ["-m", "src.main"],
      "health-check-server-port": "5682",
      "allowed-env": [
        "PATH",
        "N8N_RUNNERS_LAUNCHER_LOG_LEVEL",
        "N8N_RUNNERS_AUTO_SHUTDOWN_TIMEOUT",
        "N8N_RUNNERS_TASK_TIMEOUT",
        "N8N_RUNNERS_MAX_CONCURRENCY",
        "N8N_SENTRY_DSN",
        "N8N_VERSION",
        "ENVIRONMENT",
        "DEPLOYMENT_NAME"
      ],
      "env-overrides": {
        "PYTHONPATH": "/opt/runners/task-runner-python",
        "N8N_RUNNERS_STDLIB_ALLOW": "json,math,re,datetime,time,random,hashlib,hmac,base64,urllib,collections,itertools,functools,uuid,typing,os,sys,subprocess",
        "N8N_RUNNERS_EXTERNAL_ALLOW": "requests,numpy,pandas,pytz,beautifulsoup4,lxml,pyyaml,cv2,moviepy,pymongo,redis,hiredis,ffmpeg,allin1"
      }
    }
  ]
}

Tag summary

Content type

Image

Digest

sha256:d8b3ba319…

Size

1 GB

Last updated

3 months ago

docker pull successage/n8n-runner