话说用 docker 当环境进行开发咋样?

2020-04-11 00:14:55 +08:00
 Flands

最近在对比 mac 和 win 的优劣势(本帖不讨论),然后看到这个帖子

https://www.v2ex.com/t/660818?p=2

刚好这两天捣鼓 docker,现在感觉用搞个 image 当开发环境也可以啊。
vscode 依旧打开宿主机的项目目录,然后在 container 里跑。
项目成员的环境也能一致,不知道运行效率如何。

14346 次点击
所在节点    程序员
79 条回复
locoz
2020-04-11 09:19:18 +08:00
当然可以啊,我以前 Windows 下开发的时候就是用的 docker 。
先把环境用 docker file 配好,然后直接用 ide 的远程同步(或者直接整个目录映射进去)和调试功能进行开发,体验就是和 linux 上差不多。
然后如果公司有测试环境之类的东西也是 docker 的话,直接改改 docker file 扔过去就能跑了,很方便。
locoz
2020-04-11 09:20:29 +08:00
运行效率其实还好,没啥明显的感觉,就是内存吃得多。
MengiNo
2020-04-11 09:21:23 +08:00
好奇怪 看到有几层楼说 本地使用自己环境 上线容器化。开发测试都没用过的环境就敢直接上线么... docker 最初不就是一为方便重装换机 多版本,二位不同开发者机器环境及线上线下问题。怎么开发反而都不用,仅仅线上使用,那有啥意义……
anyc007
2020-04-11 09:35:50 +08:00
可以的啊,我先就是这样做的,很方便
yannxia
2020-04-11 09:48:36 +08:00
@MengiNo 开发自测用,开发阶段不用。
linvaux
2020-04-11 09:48:58 +08:00
个人没这习惯,而且感觉这种做法有点吃力不讨好
Chingim
2020-04-11 09:57:57 +08:00
@Flands nodesass 为啥要配置一堆东西,项目里放一份.npmrc 就行了
celeron533
2020-04-11 10:03:56 +08:00
如果你的项目有多个历史版本需要维护或者你反复横跳于多个项目组,而且各个项目都有不可调和的互斥依赖关系(如老版本在 java6,新版本在 java9 ),那么可以考虑容器实现。
不然的话还是建议相对固定的本地开发环境比较好
caola
2020-04-11 10:04:48 +08:00
现在用 WSL2 已经非常的爽了
xuanbg
2020-04-11 10:09:11 +08:00
用 docker 搞开发环境,真是天才的思路!!!

像我这样愚笨的人,就只会用 docker 部署开发中的项目用来自测……
jin7
2020-04-11 10:10:44 +08:00
别问 实际体验再说 发现更麻烦自然会放弃 反正我是放弃了
rockyou12
2020-04-11 10:14:29 +08:00
@MengiNo 光是容器化后能上 k8s 就很有意义了,而且你们没有线上的测试环境嘛……不可能开发完,本地测完就直接部署到生产吧
xdays
2020-04-11 10:41:04 +08:00
我发现,多数开发在尝试用 docker 来跑开发环境最后都放弃了,因为你除了像以前一样安装开发环境所需要的依赖(构建 image 的时候),还得学会怎么用 docker, docker-compose,而这些东西如果你公司的生产环境没有用或者用了作为开发平常也接触不到生产环境,那用 docker 就是增加了额外的学习成本。所以说,这取决于开发对的 devops 的理解,如果有这种意识的话,那这个学习成本给整个开发部署的过程会带来很大的好处。

回到你说的效率问题,win 我不清楚,docker for mac 依然存在性能问题,尤其是频繁改动文件的时候,系统 cpu 使用率极高,风扇狂转。
rrfeng
2020-04-11 10:52:34 +08:00
vs code docker remote 了解一下
nvkou
2020-04-11 10:59:23 +08:00
@xdays 不是啊。一个人搞懂了就好了啊。docker file 一分发就行了。或者导出为文件,工友导入就是了。规则是自己定义的。而且构建 image 是容器里面的依赖,和宿主机无关。
ljpCN
2020-04-11 11:06:20 +08:00
大家都在说用 docker 做开发环境的合理性。我问个另外的问题:你打开宿主机的项目文件夹,那 vscode 识别到的是宿主机的开发环境,那代码提示什么的怎么办?(比如这是一个 Python 但你宿主机没装 Python 或者版本不一样)
Symo
2020-04-11 11:28:16 +08:00
@ljpCN 如果是 vscode 就更简单了, 直接使用 vscode remote for container
fuis
2020-04-11 11:57:14 +08:00
关于容器的运行效率,docker 当然是要在 Linux 下面跑。在 macOS 和 Windows 的 docker 都是虚拟机,有什么意义了。
MengiNo
2020-04-11 12:03:31 +08:00
@rockyou12 我个人是 docker 跑全程的,本地开发一个项目就是 用 vscode remote container 做一个镜像 然后在容器内部开发测试,提交后 ci/cd 也是用 drone 跑完最后做成一个镜像提交到 image repo 。 我感觉这样才是完整保证环境一致 即纵向每个步骤环境一致 横向每个开发人员环境一致。 不过的确现实情况下没有一个同事愿意搞这么一套 都是提交 dev 后把任务丢给测试 23333 。。。 只是我个人觉得 ci/cd 只能帮你发现测试用例的逻辑问题, 至于这个镜像怎么样 好像并没有什么好的方式,不过容器都是基于标准 base 制作的不太会出问题,可能是我多虑了。
esw
2020-04-11 13:30:56 +08:00
我经常这样搞,因为平常做网络相关开发,经常需要搭建一些特定 topo 的模拟环境,不过环境一般放在服务器上,代码在本地写,然后用 fswatch + rsync 自动同步到服务器上,这样下来本地和服务器都不会因为文件 io 造成性能损失,体验非常好

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

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

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

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

© 2021 V2EX