Vue 项目部署全记录:从 WSL 本地开发到 Docker 容器化与公网穿透

Vue 项目部署全记录:从 WSL 本地开发到 Docker 容器化与公网穿透
Austoin环境:Windows 11 + WSL 2 (Ubuntu 22.04/24.04)
项目:Vue 2 + Vite (TodoList)
第一部分:基础环境搭建 (WSL)
无论采用哪种部署方式,首先需要确保 Linux 环境具备 Node.js 和 Git 能力。
1. 配置 Node.js (使用 NVM)
为了避免权限问题和灵活切换版本,使用 NVM (Node Version Manager) 安装 Node 20。
1 | # 1. 安装 NVM (通过 Git 克隆,避开 curl 连接失败问题) |
2. 获取项目与 Git 修复
解决 WSL 中 Git 可能遇到的 SSL 报错。
1 | # 1. 修复 Git SSL 错误 |
第二部分:路径一 —— 本地原生运行 (Native Run)
这种方式适合开发阶段调试,直接在 Linux 终端运行项目。
1. 安装依赖与启动
1 | # 清理可能存在的 Windows 平台缓存(重要习惯) |
第三部分:路径二 —— Docker 容器化部署 (推荐)
这种方式适合生产环境,解决”在我的机器上能跑”的依赖问题。
1. 解决 Docker WSL 连接
如果提示 command 'docker' could not be found:
- 打开 Docker Desktop 设置 -> Resources -> WSL Integration。
- 开启当前 Ubuntu 发行版的开关并重启。
2. 编写 Dockerfile (解决跨平台依赖坑)
核心痛点:本地 Windows 的 node_modules 包含特定平台的二进制文件,直接复制到 Linux 容器会报错 vite: not found。
解决方案:先复制,再强删,最后在容器内重装。
Dockerfile 内容:
1 | # 构建阶段 |
3. 构建与运行
1 | # 1. 构建镜像 (使用 --no-cache 防止缓存旧的错误层) |
第四部分:公网穿透方案 (三选一)
将本地服务暴露给公网,以下是三种不同场景的方案。
方案 A:Cloudflare Tunnel (Docker 专用,最稳定)
适合长期运行,不需要本地安装客户端。
1 | # 启动穿透容器,连接到 8080 端口 |
方案 B:Serveo (SSH 方式,无需安装,最快)
适合临时展示,利用 Linux 自带的 SSH 功能,无需下载任何东西。
基本用法:
1 | # 格式:ssh -R 80:localhost:本地端口 serveo.net |
- 注意:第一次连接时会提示
Are you sure...?,输入yes回车。 - 自定义域名(如果运气好没被占用):
ssh -R mytodolist:80:localhost:8080 serveo.net
方案 C:Tunnelto (需注册)
旧版简单,新版需要 Key,此处略过,作为备用。
第五部分:进程守护 (让服务在后台跑)
当你关闭终端窗口时,SSH (Serveo) 或 npm 进程通常会断开。使用 nohup 让它们在后台运行。
1. 后台运行 Serveo
1 | # 将 Serveo 挂在后台,并将日志输出到 serveo.log |
2. 关闭后台进程
由于没有窗口了,需要手动查找并杀掉进程。
1 | # 1. 查找 ssh 进程的 PID |
总结:常用命令速查表
| 操作 | 命令 | 备注 |
|---|---|---|
| 构建镜像 | docker build --no-cache -t <名字> . | 加上 no-cache 避免缓存坑 |
| 启动容器 | docker run -d -p 8080:80 --name <名字> <镜像名> | 启动服务 |
| CF 穿透 | docker run ... cloudflare/cloudflared ... | 稳定方案 |
| Serveo 穿透 | ssh -R 80:localhost:8080 serveo.net | 免安装、极速方案 |
| 查看 Docker | docker ps | 查看正在运行的容器 |
| 查看日志 | docker logs <容器ID> | 排查问题 |







