4300多个n8n工作流怎么管:Docker Compose到Kubernetes的容器化部署实践
【免费下载链接】n8n-workflowsall of the workflows of n8n i could find (also from the site itself)项目地址: https://gitcode.com/GitHub_Trending/n8nworkflo/n8n-workflows
工作流攒到几千条之后,靠手动翻目录基本就失控了。n8n-workflows 仓库把收集到的 n8n 工作流按集成服务拆成了两百多个子目录,全部放在 workflows/ 里,每条流程就是一个 JSON 文件。想快速找到"Telegram 触发、写 Google Sheets"这条流程,或者确认某个集成一共有多少现成模板,在文件树上靠肉眼翻不现实。
这个仓库自带一个浏览检索服务,把全部工作流索引成可搜索的站点。这篇文章介绍它的容器化部署路径:先用 Docker Compose 在单机上跑起来,数据落盘、搜索配好之后,再按 k8s/ 和 helm/workflows-docs 里的清单升级到 Kubernetes。
一、Docker 部署 n8n:一条命令把服务拉起来
克隆仓库后,在根目录执行:
git clone https://gitcode.com/GitHub_Trending/n8nworkflo/n8n-workflows cd n8n-workflows docker-compose up -d.dockerignore 保证构建时不会把无关文件塞进镜像。Docker 侧的全部约定写在 Dockerfile:基于 python:3.11-slim,以 uid 1001 的非 root 用户运行,并且内置了 HEALTHCHECK,每 30 秒请求一次http://localhost:8000/api/stats。
.dockerignore 保证构建时不会把无关文件塞进镜像。Docker 侧的全部约定写在 Dockerfile:基于 python:3.11-slim,以 uid 1001 的非 root 用户运行,并且内置了 HEALTHCHECK,每 30 秒请求一次http://localhost:8000/api/stats。
确认成功的标准只有一个:
curl http://localhost:8000/api/stats返回 JSON 统计数据就说明服务已就绪。想看容器是否通过内置健康检查,执行docker inspect --format '{{.State.Health.Status}}' n8n-workflows-docs,输出 healthy 即可。
二、数据卷、搜索索引与开发热重载
docker-compose.yml 给服务挂了两个命名卷:workflows-db:/app/database和workflows-logs:/app/logs。作用是把 SQLite 数据库和运行日志移到容器生命周期之外——重建容器、升级镜像之后,数据不会丢。
服务启动时会扫描 workflows/ 下的 JSON 文件,生成全文搜索索引(产出物如 docs/api/search-index.json)。如果你往workflows/里新增了流程文件却搜不到,重新运行一次索引脚本即可:
python scripts/generate_search_index.py两个可选环境在单独的 compose 文件里:
- docker-compose.dev.yml:挂载整个代码目录、开启 RELOAD 热更新和 DEBUG 日志,适合改代码验证;
- docker-compose.prod.yml:日志降到 warning、启用指标、限制内存 512M / CPU 0.5,并把工作流目录以只读方式挂入容器。
三、Kubernetes 部署 n8n:双副本、滚动更新与探针
需要对外长期提供服务时,仓库的 k8s/ 目录给了一套完整清单:namespace.yaml 建立独立命名空间,configmap.yaml 注入ENVIRONMENT、MAX_WORKERS等配置,deployment.yaml 跑工作负载,service.yaml 和 ingress.yaml 负责流量入口。
kubectl apply -f k8s/namespace.yaml kubectl apply -f k8s/ -k-k会自动解析目录里的多文档 YAML,包括 configmap.yaml 里附带的 Secret。之后用kubectl get pods -n n8n-workflows确认两个副本都进入 Running 状态。
deployment.yaml 里几个关键决策值得照搬:
replicas: 2加 RollingUpdate 策略(maxSurge: 1、maxUnavailable: 0),升级期间始终至少有两个副本在线,流量不断;- liveness 与 readiness 探针都请求
/api/stats,后者每 5 秒一次,副本没准备好就自动从 Service 摘除; - 资源 requests 256Mi/250m、limits 512Mi/500m,Pod 以 uid 1000 非 root 运行,数据库和日志各挂 1Gi、2Gi 的 PVC;
- service.yaml 把 80 转发到容器 8000,ingress.yaml 配了强制 HTTPS、限流 100 rps、请求体上限 10MB。
四、端口冲突、日志与健康检查的排查顺序
排障按下面三步走,基本能覆盖大多数情况。
端口被占。启动后访问 8000 端口返回的不是你的服务,先查谁占了端口:
lsof -i:8000找到进程释放,或改 docker-compose.yml 里的8000:8000为8080:8000,外部改用 8080 访问。
接口异常或变慢。先curl http://localhost:8000/api/stats区分"服务挂了"和"功能坏了";再执行docker logs n8n-workflows-docs --tail 100看最近日志,日志同时落在 workflows-logs 卷里,可回溯。
搜不到新工作流。数据都在但搜不到,多半是索引没更新,回到第二步重跑 scripts/generate_search_index.py,然后刷新页面验证。
五、用 Helm Chart 收敛参数,开自动扩缩容
裸 YAML 适合学习,长期运维建议走 helm/workflows-docs:
helm install workflows-docs helm/workflows-docsvalues.yaml 把副本数、镜像、探针、持久化、HPA 全部参数化。两个值得打开的开关:
autoscaling.enabled改为 true 后,副本可在 2 到 10 之间按 80% CPU 利用率自动扩缩;podDisruptionBudget默认启用,minAvailable 设为 1,保证节点维护或发布时集群始终有可用副本。
需要监控时把monitoring.enabled打开,ServiceMonitor 会按 30s 间隔抓取/metrics路径。
上线前的自查清单
- Docker Compose 本地跑通,
/api/stats返回 JSON,容器健康状态为 healthy - 数据库与日志落在 workflows-db、workflows-logs 卷,重建容器后数据仍在
- 新增工作流后重跑索引脚本,搜索能命中
- K8s 双副本 Ready,滚动更新期间服务不中断
- Helm 安装,按需开启 HPA 与 PDB
【免费下载链接】n8n-workflowsall of the workflows of n8n i could find (also from the site itself)项目地址: https://gitcode.com/GitHub_Trending/n8nworkflo/n8n-workflows
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考