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

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 ,或推荐其他更优方案

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

6742 次点击
所在节点    程序员
52 条回复
Nnq
2023-01-05 06:15:59 +08:00
就 1 台 16G 的机器,如果个人 PC 配置都不错的话,大可不必这么折腾,没必要,没有人专门维护,浪费在折腾上的时间还不如多出几个 features
yimiaoxiehou
2023-01-05 08:18:45 +08:00
就这配置,瞎折腾
idblife
2023-01-05 08:44:06 +08:00
16G 的机器性能可能还不如员工电脑,别折腾了
litchinn
2023-01-05 08:59:58 +08:00
服务部署是有另外的服务器吗,不然 16g 干脆直接拿来部署服务给前端调试算了,或者装一些开发用的服务,比如日志工具,还有禅道或者 jira 等
hanxiV2EX
2023-01-05 09:00:05 +08:00
直接装 linux 服务器版本,一人分配一个 docker 容器,关键就是分配出网端口段和磁盘,容器里随便别人怎么搞,支持一下 docker in docker 更好,别人可以继续开子容器,限定每个人的资源就好。
maggch97
2023-01-05 09:16:55 +08:00
小项目折腾远程开发是没事找事。本机都能跑起来
xsir2020
2023-01-05 09:35:47 +08:00
我一直以为远程开发是在异地办公,没想到这是远程调试啊~
thetbw
2023-01-05 09:35:49 +08:00
8355
2023-01-05 09:43:19 +08:00
单纯开发环境除非有特殊条件强依赖 不然自己本地不是效率更高?为啥要这样做呢 OP 介绍下
sanwv
2023-01-05 09:43:55 +08:00
@oott123 现在是把宿主 socket 挂到 docker 里,遇到的问题是容器内有全局管理权限,还有新启容器再映射的是宿主机目录。感觉能实现完全隔离的 docker in docker 也能满足需求,问题是:1.能否实现完全隔离 2.性能比虚拟机模式好吗否则还不如直接用虚拟机方案了
sanwv
2023-01-05 09:46:54 +08:00
@8355 现在是每人都在各自电脑上基于 wsl2 实现环境统一,想折腾下的原因无外乎对远程开发的美好幻想,不用纠结硬件是否够用,其实方案可行的话也是先我自己用起来,不会折腾其他人
zoharSoul
2023-01-05 10:07:24 +08:00
感觉不如本地开发方便
IvanLi127
2023-01-05 10:12:35 +08:00
建议用 PVE 的 LXC 容器,预装 docker 环境,分给每个人,让他们用远程开发容器就好了。远程开发的话网络得好,不然影响效率。
james2013
2023-01-05 10:23:19 +08:00
小团队使用远程开发环境有点得不偿失
使用远程开发环境可能大公司使用效果好些,对于代码有严格保密需求的好些
本机内存 32g,固态硬盘,配置高,又没有延时,本机开发不香吗?大家一起去挤远程机子,如果远程机子出现问题,大家都只能干瞪着眼了
开发环境只需要在机器上配置一次就可以了,熟练后可能 1 天时间都不到
maggch97
2023-01-05 10:31:59 +08:00
用远程开发环境
1. 本地性能跑不起来。服务必须跑在 512G 内存的机器上,编译必须要 96 核心的机器,IDE 跑起来就要占 100G 内存
2. 本地环境部署不起来。网关,数据库,消息队列,hdfs 等等全都是一个团队维护的集群,每个组维护的服务还依赖了一百个上下游的服务。这时候一个远程开发环境能够让你的 debug 服务轻松接入测试环境。
3. 奇葩的保密政策。不允许代码下载到本地


但是
1. 你们的服务本地 wsl2 就能跑起来,现在有一台 16G 的机器可能比本地机器还差
2. 所有服务 docker 就能解决问题
3. 没有奇葩保密政策

我看不到有远程开发的必要
maggch97
2023-01-05 10:37:09 +08:00
我觉得你要做的应该是怎么优化这个本地开发的环境。

比如把你们的代码想办法跑到 Windows 上,让大家能用上 JetBrains
比如一个一键部署环境的脚本
sanwv
2023-01-05 10:54:53 +08:00
@maggch97 感谢,综合大家的回复确实没必要非上远程开发,没这样搞的理由和硬件。整理思路,把这个想法当作自己的一次尝试,学习实践下远程开发的系统搭建
sanwv
2023-01-05 11:00:27 +08:00
@IvanLi127 昨晚安装了一下 pve ,还没深入。目测 lxc 和 docker 玩法是一样的,因为我们是用 docker compose 来实现运行,感觉还是会遇到 docker in docker 如何实现完全隔离的问题
wuchujie
2023-01-05 14:49:13 +08:00
docker in docker 可能比较好。能自己继续装开发需要的数据库等包。
我最近看了一下这个项目 https://github.com/yqlbu/neovim-server
自己折腾了一版本 web 端编程。主要是我没用过 vscode 和 vscode remote 相关的不好评价。
我这边是手顺把以前 vim script 的配置改 lua 了。用起来挺爽的。代码补全等各个方面都 OK 。而且我跑这个镜像的服务器也是内网的。速度很快。甚至我还装了个 tmux 用 web 登录开发机再用 tmux 登录远程服务器
wuchujie
2023-01-05 14:50:07 +08:00
@wuchujie 但是这个镜像可能不能直接用。你需要重新再打包一次。他本身的脚本 chown -R 有点问题。

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

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

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

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

© 2021 V2EX