docker小白自存-windows系统通过docker安装n8n-nodes-puppeteer
n8n上直接在社区下载puppeteer节点,使用时会报错说没有chromium依赖。
找到了n8n-nodes-puppeteer的github试图解决
根据他的docker安装指南执行,运行容器时会报exec /docker-custom-entrypoint.sh: no such file or directory (明明文件都有
后面根据deepseek(谢谢d老师)改了一下dockerfile文件成功了
原因:
- Windows换行符问题:Windows使用CRLF换行符,而Linux需要LF。这会导致脚本无法执行。
解决方案:
- 把文件扔进vsode,CRLF换成LF,保存文件就ok(这个我没试过,先试的第二种)(二编:试过了不行 还是要改dockerfile内容)
- 改dockerfile内容,添加dos2unix工具
FROM docker.n8n.io/n8nio/n8nUSER root# Install Chrome dependencies and Chrome
RUN apk add --no-cache \chromium \nss \glib \freetype \freetype-dev \harfbuzz \ca-certificates \ttf-freefont \udev \ttf-liberation \font-noto-emoji# Tell Puppeteer to use installed Chrome instead of downloading it
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser# Install n8n-nodes-puppeteer in a permanent location
RUN mkdir -p /opt/n8n-custom-nodes && \cd /opt/n8n-custom-nodes && \npm install n8n-nodes-puppeteer && \chown -R node:node /opt/n8n-custom-nodes# Copy our custom entrypoint
COPY docker-custom-entrypoint.sh /docker-custom-entrypoint.sh
RUN apk add --no-cache dos2unix && \ dos2unix /docker-custom-entrypoint.sh && \ chmod +x /docker-custom-entrypoint.sh && \chown node:node /docker-custom-entrypoint.sh && \apk del dos2unix USER nodeENTRYPOINT ["/docker-custom-entrypoint.sh"]
后续根据官方指南执行构建镜像:
docker build -t n8n-puppeteer -f docker/Dockerfile docker/
运行容器(我是在dockerdesktop上直接创建的没有用这个命令;n8n_data是我在dockerdesktop上建的数据卷):
docker run -it \-p 5678:5678 \-v n8n_data:/home/node/.n8n \n8n-puppeteer
总之最后成功了 以上
=============================================
【二编】后来另一台电脑安装的docker desktop版本是 4.11.1 (84025),只能命令行创建,但是使用n8n puppeteer时出现新的报错:
Failed to launch/connect to browser: Failed to launch the browser process! Failed to move to new namespace: PID namespaces supported, Network namespace supported, but failed: errno = Operation not permitted [44:44:0627/063339.306656:FATAL:content/browser/zygote_host/zygote_host_impl_linux.cc:211] Check failed: . : Operation not permitted (1) [0627/063339.344366:WARNING:third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc:95] sched_getscheduler: Function not implemented (38) [0627/063339.344661:WARNING:third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc:95] sched_getscheduler: Function not implemented (38) [0627/063339.345185:ERROR:third_party/crashpad/crashpad/util/file/file_io_posix.cc:145] open /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq: No such file or directory (2) [0627/063339.345332:ERROR:third_party/crashpad/crashpad/util/file/file_io_posix.cc:145] open /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq: No such file or directory (2) TROUBLESHOOTING: https://pptr.dev/troubleshooting
定位到问题是我的win10版本是17763的,低于 Docker Desktop 要求使用 WSL2 引擎的版本 18362.1040+,“Use the WSL 2 based engine (requires Win 10 build 18362.1040+)”这个未选中,未使用WSL2引擎。d老师表示,可能使用的是较旧的 Hyper-V 或 VirtualBox 作为后端。在这种情况下,容器实际上是在一个虚拟机中运行,而Puppeteer需要Linux内核级权限(如命名空间操作),但当前容器环境权限不足。
解决方法:添加容器特权,在docker run命令中添加–privileged参数,授予容器完全主机权限,解决Operation not permitted错误。
docker run -it --privileged \ -p 5678:5678 \-v n8n_data:/home/node/.n8n \-e N8N_CHROME_ARGS="--no-sandbox --disable-setuid-sandbox" \n8n-puppeteer
执行后已成功解决问题。
d老师还提供了另外两种方法,没试过,也先扔出来。
2. 添加特定Linux能力
如果–privileged权限过高,可尝试精细控制:
docker run -it \--cap-add=SYS_ADMIN \ # 添加系统管理能力--cap-add=NET_ADMIN \ # 添加网络管理能力-p 5678:5678 \-v n8n_data:/home/node/.n8n \-e N8N_CHROME_ARGS="--no-sandbox --disable-setuid-sandbox" \n8n-puppeteer
- 禁用安全配置文件
docker run -it \--security-opt seccomp=unconfined \ # 禁用seccomp--security-opt apparmor=unconfined \ # 禁用AppArmor-p 5678:5678 \-v n8n_data:/home/node/.n8n \-e N8N_CHROME_ARGS="--no-sandbox --disable-setuid-sandbox" \n8n-puppeteer
- 使用root用户运行
docker run ... n8n-puppeteer -u root
(最后实在不行的话就升级windows版本
(垃圾公司电脑升级一直错误 人都麻了