小团队如何搭建远程开发环境

2023-01-04 17:03:59 +08:00
 sanwv

先说下背景,主要是 web 开发,都熟悉 linux ,10 人左右,当前用的方案是 wsl2+docker ,vscode 连到 wsl2 写代码,docker 实现运行环境。其实这样也没啥大问题,但是现在有台闲置机器( pc 机 16G )自己想折腾一下-_-

目前能想到的远程开发方案列一下

方案 1:VM 方案

基于 esxi 或者 kvm 给每个人分配一个虚拟机,vscode+ssh remote 开发,在虚拟机里各自安装 docker 运行项目。主要是担心性能不够

  1. 底层选 esxi 还是有更优的推荐?
  2. 不影响体验最多能启动多少个 vm ?

方案 2:docker in docker 方案

宿主机上跑 docker ,每人分配一个 docker 容器,用 docker in docker 的方案来实现运行环境。已经折腾了下,开发代码没啥问题,但是每个容器内都有操作宿主机 docker daemon 的能力有点不可控,mounts 也是宿主目录而非容器内目录。主要是没搞定完全隔离

  1. 容器内有全局管理 docker 的能力
  2. 内层容器挂载的是宿主机目录

方案 3:继续 wsl2 ,或推荐其他更优方案

希望有前辈推荐下方案,解答下方案的问题,感谢

6784 次点击
所在节点    程序员
52 条回复
sanwv
2023-01-05 15:23:46 +08:00
@wuchujie 好几年前关注过 neovim ,也折腾过,vscode 满足了我对编辑器的所有需求
agmx321
2023-01-05 16:33:21 +08:00
pc 机器 16G 性能可能本身会有局限,考虑到成本效率及 pc 硬件的不可控性,10 人共用的话,可以考虑:
1.宿主机安装 Ubuntu20.04 桌面版并装 kvm(最简单),公共服务直接在 Ubuntu docker 上跑,需要强隔离的可以放在 kvm 里面;免费的 MobaXterm 可以直接图形化创建 kvm 机器,不用大家都需要会后台创建 kvm 。
2.或者宿主机 Ubuntu20.04 配合 virtualbox+vagrant (稍微要配置下,后续 vagrantfile 用起来很方便)个人不推荐你用这种,pc 16G 的机器没必要这么折腾了,仅提供思路;

如果还要使用网络隔离:
1.可以直接使用 Ubuntu 的 iptables
2.如果大家在家里也想访问公司里面的 ubuntu 宿主机的服务,可以使用 tailscale, 免费的额度就够你们用了;
learningman
2023-01-05 16:50:38 +08:00
zhouu
2023-01-05 17:37:46 +08:00
部署一套 coder
greatghoul
2023-01-05 23:58:39 +08:00
试试 gitpod 的 project?
uncat
2023-01-06 01:20:59 +08:00
我们在用的方案:

- 一台物理服务器 7*24 小时运行 Ubuntu LTS
- 每个人有一个普通帐号(没有 root 权限)基于 vscode remote development 连入,统一开发环境
- 物理服务器通过 libvirtd 自建虚拟化提供任意数量虚拟机
- 配置 bridge 网络实现虚拟机、物理机在同一个局域网
- 封装脚本,实现虚拟机一键快照和回滚
- 对虚拟机发起测试,测试后如果需要清理现场,恢复快照实现重复测试
- 自建 wireguard + frpc 实现远程办公接入
Akkuman
2023-01-06 08:54:10 +08:00
docker in docker 试试 firecracker ,严格来说是 docker in 轻量虚拟机
sanwv
2023-01-06 09:45:26 +08:00
@uncat 看着很赞
sanwv
2023-01-06 09:47:37 +08:00
@Akkuman 刚看了一眼 firecracker ,确实严格来说是 docker in 轻量虚拟机,我周末仔细研究下这个东西 赞
sanwv
2023-01-06 09:48:41 +08:00
@uncat vpn 也是必备组件,不过为什么还需要 frpc 呢,没公网 ip ?
uncat
2023-01-06 12:51:05 +08:00
通过 frpc tcp 在 frps 服务器暴露 wireguard ,签发 wireguard 证书给开发者,远程开发者连接 wireguard 相当于跟所有的虚拟机、物理机在同一个内网
uncat
2023-01-06 12:53:33 +08:00
物理服务器在办公区机房,办公区网络,无公网 IP

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/906569

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX