Docker迁移(N8N项目)

🧭 总体目标

把 本地虚拟机 /home/flexus/n8n-dev

➡ 完整迁移到云服务器 /home/projects/docker-services/n8n-dev

(实际目录依据自己的目录结构自行修改)

保证:

  • workflow / datatable / credential 不丢

  • images、drafts 文件可继续读写(我的n8n做的目录映射,如果没有可以不用管)

  • docker-compose.yml 基本不改

一、在【本地虚拟机】执行(只做 3 件事)

1️⃣ 停止 n8n(必须)

bash 复制代码
cd /home/flexus/n8n-dev
docker-compose down

2️⃣ 打包整个项目目录

⚠️ 不是只打包 n8n_data,是整个 n8n-dev

bash 复制代码
cd /home/flexus
tar -czvf n8n-dev.tar.gz n8n-dev

生成:

/home/flexus/n8n-dev.tar.gz

bash 复制代码
3️⃣ 拷贝到云服务器

在本地执行(示例):

bash 复制代码
scp n8n-dev.tar.gz user@云服务器IP:/home/projects/docker-services/

(或者手动采用其他方式将压缩包复制到云服务器对应目录即可)

二、在【云服务器】执行(核心步骤)

4️⃣ 解压到目标目录

bash 复制代码
cd /home/projects/docker-services
tar -xzvf n8n-dev.tar.gz

最终目录应为:

bash 复制代码
/home/projects/docker-services/n8n-dev
├── docker-compose.yml
├── .env
├── n8n_data/
├── images/
├── drafts/
├── n8n_latest.tar

5️⃣ 修正目录权限(⚠️非常关键)

n8n 容器内用户是 node (uid=1000):

n8n应用使用过程中创建的一些映射目录均要执行

我创建了两个目录(images、drafts)没有创建目录,只执行n8n自带的数据目录即可(配置在yml中的,我的名称是:n8n_data)

bash 复制代码
cd /home/projects/docker-services/n8n-dev
sudo chown -R 1000:1000 n8n_data images drafts
sudo chmod -R 775 n8n_data images drafts

否则可能会报错 Permission denied / Forbidden 等问题

6️⃣(可选)加载本地镜像 n8n_latest.tar

如果云服务器拉不动镜像,加载本地的镜像(提前在主机下载好的,详情见上一篇文章):

bash 复制代码
docker load -i n8n_latest.tar

三、启动并验证

7️⃣ 启动 n8n

bash 复制代码
cd /home/projects/docker-services/n8n-dev
docker-compose up -d

查看日志:

bash 复制代码
docker logs -f n8n

8️⃣ 验证清单(2 分钟)

打开:

bash 复制代码
http://云服务器IP:5678

确认以下几点:

  • ✅ Workflow 全在

  • ✅ DataTable 数据还在

  • ✅ Read / Write File 节点

    • /home/node/.n8n-files/images
    • /home/node/.n8n-files/drafts
    • 能正常读写
  • ✅ 不再出现 Permission denied

四、docker-compose.yml 是否需要改

依据个人的配置代码,我的代码配置的映射目录,主机目录用的都是相对目录,直接不用修改,直接使用。

bash 复制代码
volumes:
  - ./n8n_data:/home/node/.n8n
  - ./images:/home/node/.n8n-files/images
  - ./drafts:/home/node/.n8n-files/drafts

只要目录 + 权限正确,行为 100% 复现。

五、常见踩坑

现象 原因 解决
文件写入失败 权限不对 chown 1000:1000
workflow 不见 没拷 n8n_data 重新迁移
drafts/images 空 路径不一致 保证相对路径
能启动但异常 没停机就打包 重新来一遍
相关推荐
Ares-Wang6 小时前
Linux》》systemd 、service、systemctl daemon-reload、systemctl restart docker
linux·运维·docker
苏渡苇8 小时前
Docker 网络完全指南
网络·docker·容器·docker容器·容器通信
风向决定发型丶9 小时前
K8S CPU绑核详解
云原生·容器·kubernetes
斯普信云原生组10 小时前
Docker 开源软件应急处理方案及操作手册——镜像管理与构建故障
docker·容器·eureka
MichealChen01050813 小时前
Influxdb-cluster使用docker部署
运维·docker·容器
斯普信云原生组14 小时前
Docker 开源软件应急处理方案及操作手册——安全漏洞与权限问题
运维·docker·容器
MonkeyKing_sunyuhua14 小时前
阿里云ECS安装docker compose
阿里云·docker·云计算
迷路爸爸18016 小时前
Docker 入门学习笔记 06:用一个可复现的 Python 项目真正理解 Dockerfile
笔记·学习·docker
斯普信云原生组16 小时前
Docker 开源软件应急处理方案及操作手册——容器运行异常处理
docker·容器·eureka
摆烂z16 小时前
对外访问网络限制*.aliyuncs.com开放也拉不下来和查看docker容器结构
运维·docker·容器