* 说明:在此使用的是官方手脚架+docker部署vtj.pro

目录

1.部署过程

1.前提:安装node npm npnm

2.创建:

3.编写Dockerfile配置

4.运行

2.如何给对方使用

1.打包镜像

2.传输到目标服务器

3.在目标服务器中运行

3.升级vtj.pro版本--(手动升级)

1.先确认当前版本和最新版本

2.清除缓存&&重新安装 -- 不一定成

3.如果2不成功

4.更新项目版本号

5.修改Dockerfile配置

6.重新创建镜像

7.验证版本的一致性

8.如果要打包(可选)

4.添加挂载卷(补充)

1.部署过程

        1.前提:安装node npm npnm

# 1. 先装 npm 旧版(当脚手架)
sudo apt update && sudo apt install -y npm

# 2. 用 npm 装 Node 版本管理器 n
sudo npm install -g n --registry=https://registry.npmmirror.com

# 3. 装官方 LTS 版 Node.js(自带 npm)
sudo bash -i -c "N_NODE_MIRROR=https://npmmirror.com/mirrors/node n stable"

# 4. 升级 npm 到最新
sudo npm install npm@latest -g

# 5. 装 pnpm(可选)
sudo npm install -g pnpm --registry=https://registry.npmmirror.com

# 验证
node -v   # v20.x
npm -v    # 10.x
pnpm -v   # 9.x

2.创建:

# 标准创建
    npm create vtj@latest -- -t app

#初始化与启动项目
  # 进入项目目录(目录名根据提示输入)
    cd your-project-name        # 如:my-vtj-app 会生成一个文件夹
  # 安装依赖(首次执行可能需 1-3 分钟)
    npm run setup

  # 启动开发服务器
    npm run dev

3.编写Dockerfile配置

# 使用官方 Node.js 运行时作为基础镜像,并指定版本和变体(如 alpine 
# 以减小体积)
FROM node:20-alpine

# 或者 FROM node:20-slim 设置工作目录
WORKDIR /app

# 复制 package.json 和 package-lock.json (如果存在)
COPY package*.json ./

# 安装依赖
RUN npm install

# 将源代码复制到容器中
COPY . .

# 构建应用(如果 package.json 中有 build 脚本)
RUN npm run build

# 暴露应用运行的端口(例如 Vite 开发服务器常用 9527)
EXPOSE 9527

# 定义启动命令
CMD ["npm", "run", "dev"]

4.运行

sudo docker run -dp 9527:9527 --name vtj-container my-vtj-app

2.如何给对方使用

1.打包镜像

# 直接在源机器上 build 并导出 tar 包(推荐)
 进入项目目录
    cd ~/my-vtj-app

# 根据 Dockerfile 构建镜像(注意最后有个点)
    sudo docker build -t my-vtj-app:latest .

# 把镜像导出成 tar 文件
    sudo docker save -o my-vtj-app.tar my-vtj-app:latest

2.传输到目标服务器

sudo scp my-vtj-app.tar 对方用户名@对方主机ip:存放到的路径

3.在目标服务器中运行

sudo docker load -i /home/wssx/VTJ/my-vtj-app.tar
sudo docker run -d --name vtj -p 9527:9527 my-vtj-app:latest

3.升级vtj.pro版本--(手动升级)

1.先确认当前版本和最新版本

# 查看当前安装的 VTJ 版本
npm list @vtj/pro @vtj/cli @vtj/web

# 查看 npm 上最新的可用版本
npm view @vtj/pro version
npm view @vtj/cli version  
npm view @vtj/web version

# 可能有更新的版本,比如 0.13.29 或更高

2.清除缓存&&重新安装 -- 不一定成

# 停止当前服务
# 清除各种缓存
rm -rf node_modules package-lock.json .vtj node_modules/.vite

# 重新安装依赖
npm install

# 如果有更新的版本,强制升级到最新
npm install @vtj/pro@latest @vtj/cli@latest @vtj/web@latest --force

3.如果2不成功

* 进入package.json,手动修改到最新版本

 cat package.json
{
  "name": "my-vtj-app",
  "description": "VTJ.PRO",
  "private": true,
  "version": "0.13.28",
  "type": "module",
  "scripts": {
    "setup": "npm install --unsafe-perm --registry=https://registry.npmmirror.com",
    "dev": "vite --port 9527 --host 0.0.0.0",
    "build": "vite build",
    "preview": "vite preview",
    "clean": "vtj clean"
  },
  "dependencies": {
    "@vtj/web": "0.13.28",
    "vue": "~3.5.0",
    "vue-router": "~4.5.0",
    "pinia": "~3.0.2",
    "vue-i18n": "~11.1.11"
  },
  "devDependencies": {
    "@vtj/cli": "0.12.13",
    "@vtj/pro": "0.13.28"
  }
}
 

4.更新项目版本号

# 更新项目版本号
npm version 0.13.28 --no-git-tag-version

# 或者直接编辑 package.json
# 将 "version": "0.9.0" 改为 "version": "0.13.28"

5.修改Dockerfile配置

开发模式:

 cat Dockerfile 
FROM node:20-alpine
# 或者 FROM node:20-slim 设置工作目录
WORKDIR /app
# 复制 package.json 和 package-lock.json (如果存在)
COPY package*.json ./
# 安装依赖
RUN npm install
# 将源代码复制到容器中
COPY . .
# 构建应用(如果 package.json 中有 build 脚本)
RUN npm run build
# 暴露应用运行的端口(例如 Vite 开发服务器常用 9527)
EXPOSE 9527
# 定义启动命令
CMD ["npm", "run", "dev", "--", "--port", "9527", "--host", "0.0.0.0"]

6.重新创建镜像

# 1. 停止并删除旧容器
sudo docker stop vtj-container
sudo docker rm vtj-container

# 2. 删除旧镜像
sudo docker rmi my-vtj-app

# 3. 重新构建镜像(确保使用最新代码)
sudo docker build -t my-vtj-app . --no-cache

# 4. 运行新容器
sudo docker run -dp 9527:9527 --name vtj-container my-vtj-app

7.验证版本的一致性

# 检查容器内的版本
sudo docker exec vtj-container cat package.json | grep version

# 对比主机版本
cat package.json | grep version

# 检查 @vtj 相关包的版本
sudo docker exec vtj-container sh -c "npm list @vtj/pro @vtj/cli @vtj/web" | grep @vtj

8.打包(可选)

源机中打包:

# 在源服务器打包整个项目
tar -czf my-vtj-app-full.tar.gz \
  --exclude='node_modules' \
  --exclude='.git' \
  ./

# 传输到新服务器
scp my-vtj-app-full.tar.gz 服务器用户名@新服务器IP:~/

# 在新服务器解压
tar -xzf my-vtj-app-full.tar.gz

4.添加挂载卷(补充)

将挂载卷挂载到源码中(代码、package.json、docker-compose.yml 都在这儿),在开发阶段改的快,热更新快

如果不挂载到源码中,需要将源码cp到所挂载的目录,手动,较为麻烦

cd /VTJ-0.13.28

vim docker-compose.yml

复制以下:

version: "3.9"
services:
  vtj:
    build: .
    container_name: vtj-container
    ports:
      - "9527:9527"
    volumes:
      - /home/wssx/VTJ/VTJ-0.13.28:/app   # 当前源码根目录
      - /app/node_modules                 # 保留容器内依赖
    environment:
      - NODE_ENV=development
    restart: unless-stopped

启动:

docker compose up -p

验证是否挂载成功:

docker inspect <容器ID或名字> | grep Mounts -A 20

# 如果挂载会看到类似:
"Mounts": [
    {
        "Type": "bind",
        "Source": "/home/wssx/VTJ/VTJ-0.13.28",
        "Destination": "/app",
        "Mode": "",
        "RW": true,
        "Propagation": "rprivate"
    }
]

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐