Files
nexus/raw/Vibe Coding/Trae远程开发部署指南.md

6.6 KiB
Raw Blame History

title, source, author, published, created, description, tags
title source author published created description tags
shenwei
remote-ssh
trae
ubuntu

#trae #ubuntu #remote-ssh

1. 整体架构图示

  • Ubuntu 2 (Dev Server): 存放源码,运行 tiktok_pm 容器代码挂载Trae 通过 SSH 远程连接此处。

  • Ubuntu 1 (Prod Server): 运行 tiktok_pm 容器(镜像打包),通过 Docker 卷持久化数据,不挂载源码。

  • ThinkBook (Local): 仅作为 UI 端,通过 Trae 连接 Ubuntu 2 进行开发。

2. Ubuntu 2开发环境配置 (Dev)

这是您主要的工作区。路径:/home/shenwei/docker/tiktok_pm

A. 目录结构

/home/shenwei/docker/tiktok_pm/
├── src/                # Django 源代码仓库
├── docker-compose.yml   # 开发环境 Compose
├── .env.dev            # 开发环境变量
└── Dockerfile          # 开发/生产共用基础镜像定义

B. 开发环境 docker-compose.yml

开发环境的核心在于 Bind Mount(绑定挂载),实现代码修改实时生效。

3. 具体配置 (ThinkBook)

第一阶段:基础设施层配置 (Connectivity & Permissions)

在配置 IDE 之前,必须确保 SSH 连接是免密的,并且你的 Ubuntu 用户有权直接操作 Docker否则 Trae 的远程插件会因为权限弹窗而连接失败或功能受限。

1. 配置 SSH 免密登录 (本地机器 -> Ubuntu2 Server)

Trae 的远程连接依赖于非交互式登录。

  • 本地机器(客户端)生成密钥对(如果已有可跳过):

    Bash

    ssh-keygen -t rsa -b 4096
    
  • 将公钥上传至 Ubuntu2 Server

    # 替换 user 和 ip
    ssh-copy-id -i ~/.ssh/id_rsa.pub shenwei@192.168.3.45
    
  • 配置 SSH Config 文件(推荐): 在本地 ~/.ssh/config (Mac/Linux) 或 %USERPROFILE%\.ssh\config (Windows) 中添加别名,方便 Trae 读取。

Host ubuntu2
    HostName 192.168.3.45
    User shenwei
    Port 22
    IdentityFile "C:\Users\ishenwei\.ssh\id_rsa"  # 你的私钥路径
Host ubuntu2-ext # 公网访问
    HostName ubuntu2.ishenwei.online:60024
    User shenwei
    Port 22
    IdentityFile "C:\Users\ishenwei\.ssh\id_rsa"  # 你的私钥路径
Host ubuntu1
    HostName 192.168.3.47
    User shenwei
    Port 22
    IdentityFile "C:\Users\ishenwei\.ssh\id_rsa"  # 你的私钥路径
Host ubuntu1-ext # 公网访问
    HostName ubuntu1.ishenwei.online:60022
    User shenwei
    Port 22
    IdentityFile "C:\Users\ishenwei\.ssh\id_rsa"  # 你的私钥路径

在 Ubuntu Server 上,你的用户必须在 docker 用户组中,否则 Trae 无法列出容器。

  • SSH 登录服务器执行:

    Bash

    sudo usermod -aG docker $USER
    # 必须注销并重新登录,或执行以下命令使组变更立即生效
    newgrp docker
    
  • 验证: 执行 docker ps,如果不需要 sudo 且能列出容器,则配置成功。


第二阶段Trae 客户端配置 (IDE Setup)

Trae 原生支持 VS Code 的插件生态,我们需要利用 Remote Development 能力。

1. 安装 Trae 及必要插件

打开 Trae在左侧扩展市场Extensions中搜索并安装如果尚未预装

  • Remote - SSH (必装)

  • Docker (Microsoft 出品,必装)

  • Dev Containers (如果你计划使用 .devcontainer 模式开发,强烈推荐)

2. 建立远程连接
  1. 使用快捷键 Ctrl/Cmd + Shift + P 调出命令面板。

  2. 输入并选择:Remote-SSH: Connect to Host...

  3. 选择你在 SSH Config 中配置的 ubuntu2

  4. Trae 会在远程服务器上安装 VS Code Server (Trae Server) 代理组件。首次连接需要几十秒。


第三阶段:开发模式选择 (Workflow Configuration)

针对 Docker 项目,你有两种主要的开发模式,根据你的需求选择:

模式 AAttach 到正在运行的容器 (推荐用于调试)

这种模式下,你直接“进入”已经在 Ubuntu 上跑起来的 Docker 容器进行代码修改。

  1. 连接成功后,在 Trae 左侧侧边栏找到 Docker 图标。

  2. Containers 列表中,找到你的目标项目容器。

  3. 右键点击该容器,选择 "Attach Visual Studio Code" (或 Trae 对应选项)。

  4. Trae 会打开一个新的窗口,此时你的 IDE 实际上是运行在 Docker 容器内部

  5. 优点:环境完全隔离,直接使用容器内的 Python/Node/Go 环境,无需在 Ubuntu 宿主机安装语言环境。

模式 B远程编辑宿主机文件 + Docker CLI (推荐用于编排)

这种模式下,你编辑的是 Ubuntu 文件系统上的代码 (/home/user/project),但在终端调用 Docker 命令。

  1. 连接成功后,点击 "Open Folder"。

  2. 选择 Ubuntu 上 docker-compose.yml 或项目代码所在的路径。

  3. 打开终端 (Ctrl + ~),直接执行 docker compose up -d 等命令。

  4. 优点:适合管理 docker-compose.yml 文件本身,或者同时管理多个微服务容器的配置。


第四阶段:解决常见“坑” (Troubleshooting)

根据经验,在内网开发 Docker 项目常遇到以下问题,请提前规避:

  1. Git 凭证问题

    • 如果在容器内开发(模式 A容器内可能没有你的 SSH Key 或 Git 配置。

    • 解决Trae/VS Code 通常会自动转发本地的 SSH Agent。确保本地运行了 SSH Agent (eval "$(ssh-agent -s)" && ssh-add),这样容器内拉取代码使用的是你本地的 Key。

  2. 文件权限 (UID/GID) 问题

    • 如果使用 Volume 挂载(将 Ubuntu 目录挂载进容器),容器内生成的 Build 文件可能归属于 root,导致你在宿主机无法删除或修改。

    • 解决:在 Dockerfile 中创建与宿主机相同 UID 的用户,或在 docker-compose.yml 中指定 user: "${UID}:${GID}"

  3. 内网穿透 (如果不只是局域网)

    • 如果你离开办公地点,需要从公网访问这个内网 Server。

    • 建议:不要直接暴露 SSH 端口。在 Ubuntu 上安装 TailscaleCloudflare Tunnel

    • 如果使用 TailscaleTrae 的 SSH Config HostName 可以直接填 Tailscale 的 IP (如 100.x.x.x),实现无缝切换。