当前位置: 首页 > news >正文

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。这会导致脚本无法执行。
    解决方案:
  1. 把文件扔进vsode,CRLF换成LF,保存文件就ok(这个我没试过,先试的第二种)(二编:试过了不行 还是要改dockerfile内容)
  2. 改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
  1. 禁用安全配置文件
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
  1. 使用root用户运行
docker run ... n8n-puppeteer -u root

(最后实在不行的话就升级windows版本
(垃圾公司电脑升级一直错误 人都麻了

相关文章:

  • 基于GPS-RTK的履带吊车跑偏检测技术方案
  • Python网络自动化API接口统一库之napalm使用详解
  • Python打卡:Day38
  • 利用云雾自动化在智能无人水面航行器中实现自主碰撞检测和分类
  • redis配置文件-redis.conf
  • 【Docker】解决:构建(docker build)或重新运行容器时,丢失apt-get update问题
  • 【Docker基础】Docker容器管理:docker ps及其参数详解
  • HexHub开发运维利器Database, Docker, SSH, SFTP
  • 数据库外连接详解:方式、差异与关键注意事项
  • 基于fpga的串口控制的音乐播放器
  • Franka 机器人在配置空间距离场实验中的突破性应用:从算法优化到动态场景适配
  • Stable Diffusion 3终极提示词库:2000个工业设计场景生成公式(2025企业级实战指南)
  • html css js网页制作成品——HTML+CSS湘菜网页设计(4页)附源码
  • Ehcache、Caffeine、Spring Cache、Redis、J2Cache、Memcached 和 Guava Cache 的主要区别
  • 自动化保护 AWS ECS Fargate 服务:使用 Prisma Cloud 实现容器安全
  • 无人机防护装置技术解析
  • 5,FreeRTOS中断管理
  • 本地部署 WordPress 博客完整指南(基于 XAMPP)
  • 替代创维GL3213S 读卡DD3118方案3.0国产 GL3224-32 TF/SD卡解码芯片
  • 【开源项目】「安卓原生3D开源渲染引擎」:Sceneform‑EQR