各位开发还在本机搭环境还是用 docker?

2021-05-06 17:19:27 +08:00
 chengdonghui

原来搞 python 、java 、ruby 的时候,都在本机搭开发环境,后来有了 docker,直接把开发环境建到 docker 中,然后把源码映射到容器中去,这样各个开发环境都是隔离的,而且也提高了部署效率。

12800 次点击
所在节点    程序员
78 条回复
iSecret
2021-05-07 10:51:22 +08:00
@zjsxwc 我之前也是这种方案,后来直接用 vagrant 了,项目比较大文件很多,同步文件受 io 影响很大。
mingl0280
2021-05-07 11:06:03 +08:00
C++硬件开发,虚拟机都用不了还 docker……
zjsxwc
2021-05-07 11:07:13 +08:00
@iSecret

宿主机 Linux 或 macOS 用 nfs 作为 synced_folder 类型,读写瞬开,特别快,默认的 vbox 共享文件 确实慢

https://www.vagrantup.com/docs/synced-folders/nfs
ColinLi
2021-05-07 11:07:29 +08:00
本地开发为啥要用 docker ?用 docker 不是更麻烦吗,数据库搭建一个公共的开发数据库大家都能用,写代码的时候启动一个 idea 不就 ok 了
ColinLi
2021-05-07 11:10:43 +08:00
@ColinLi 如果有其他相关的微服务,在开发环境都部署一套就完事了,开发的时候都可以直连
xingheng
2021-05-07 11:33:54 +08:00
@zjsxwc #43
@iSecret #41
vagrant 空跑的时候 cpu 占用率怎么样
zjsxwc
2021-05-07 12:09:52 +08:00
@xingheng
vagrant 本身不占什么资源,主要是 virtualbox 虚拟机占用,
我这 VBoxHeadless 进程空跑也就 2%的样子,
如果使用了开发虚拟机里面的服务,
那么最大占用 cpu 就看你在 virtualbox 里分配了多少资源给开发虚拟机。
chenshun00
2021-05-07 12:11:44 +08:00
我是 mac,用 docker 装的一些环境,例如 mysql,redis/mongo,es,kibana,以及 RocketMQ(broker/ns),挺方便的,不过还是体现在开发环境方面. 切换机器只要装一下 docker 就可以了. dockerfile 这种都上传到 dockerhub 了。
ysicing
2021-05-07 12:51:30 +08:00
定制了 vagrantfile 很方便
服务的话用 docker & k8s
xingguang
2021-05-07 13:24:01 +08:00
我在 docker 里 npm install 都要一个小时,遂放弃
zhaojames077
2021-05-07 14:08:39 +08:00
开发 Python 项目的时候会用 Docker,主要一些需要基于 C 的依赖(例如 mysqlclient )需要使用 brew 安装到机器上,略有些麻烦
iSecret
2021-05-07 14:16:48 +08:00
@xingheng 是的,空跑不占什么资源的,需要考虑的挂载导致的 io 瓶颈,我现在项目的文件是直接丢虚拟机里的,不走挂载,当然你需要有定时同步代码的习惯,不然哪天 box 坏了或者无法连接代码不会丢失。
Suomea
2021-05-07 14:47:54 +08:00
docker 方便的多啊
caixiaomao
2021-05-07 14:58:56 +08:00
redis mysql 等基本都用 docker
BeautifulSoap
2021-05-07 15:06:10 +08:00
对于 mysql,ElasticSearch,Redis 这些那肯定得用 docker 跑啊,配合 docker-compose 直接一键就需要的东西全跑起来了,方便得很,这种不同项目要用不同内容的肯定用 docker

至于开发方面,除了 php 、nodejs 我是直接无脑用 docker 外,其他的 go 、python 之类的我觉得还是本地更方便一点,主要还是为了调试。php 本身安装就麻烦得一塌糊涂,安装 php-fpm,安装 nginx,做配置,涉及到的 php 项目多了,是真的吐血,所以直接 docker 是真的节省人生。nodejs 因为不是主力开发,所以直接塞 docker 里,各种版本之类的不用管非常舒心
zxCoder
2021-05-07 15:15:23 +08:00
@zjsxwc vagrant 性能如何呢
INTOX8O
2021-05-07 16:15:30 +08:00
Win WSL2+docker 真香
imycc
2021-05-07 16:29:29 +08:00
这题我会。本地一个虚拟机,搞 python web 开发和前端。

简单的开发直接本地部署,用 pyenv 管理多个项目,一个项目一个虚拟环境隔离开。前端本来就是一个项目一份依赖,再加上 nvm 管理多个 nodejs 版本,基本满足需要。
复杂业务就打包成镜像,用 docker-compose 编排一下各个服务的关联。

第三方服务、组件之类的,一律 docker 搞定。没啥特殊需求的直接用官方镜像,有特殊需求的还会自己重打个镜像。(比如数据库配置之类的)

开发的时候直接把代码目录挂进去容器内,调试效率不会比直接部署差。
gBurnX
2021-05-07 20:51:22 +08:00
@bthulu 磨刀不误砍柴工,前期准备各种不同的 OS 以及开发环境,做模板,是很累。

问题是,一旦这种东西都做好了,直接起飞。比如临时想要 3 个不同的环境,直接克隆,分分钟的事情。
gBurnX
2021-05-07 20:52:14 +08:00
@abcbuzhiming 条件,指的是至少要有一台高配虚拟化物理服务器。虚拟化是对硬件性能要求不低,但作为生产工具,这是值得的。

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

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

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

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

© 2021 V2EX