有多少后端开发环境不用docker的?

json
  • 8

最近公司在推行使用docker,要求开发人员开发环境使用docker进行开发,于是看了下docker的东西,感觉好麻烦啊,这玩意就是将运行环境搞成镜像,放到docker里面,然后宿主机不需要环境了,代码放到docker里面运行。但是我开发的时候,随时都可能添加依赖扩展啊,要重新打镜像? 好麻烦的样子

回复
阅读 2k
4 个回答

使用 docker 来构建开发环境,想法是美好的,只需要写写 docker-compose.yml 和 Dockerfile ,就能构建起一个开发环境,并且还能让每个开发人员的环境都是一样的,还可以达到同步环境的效果,减少了像 “在我这儿好好的呀,怎么到你那儿就不行了” 这样的麻烦。

但是,有个问题就是,大多数人都是用的 Windows 作为开发机,而 docker 的最佳运行环境是 Linux,因为这玩意儿在 MAC OS 还存在 IO 问题,体验也不是很好。

docker 在 Windows 上运行又有几个问题,在旧的 Windows 上,比如 7,要想使用 docker ,下载 docker toolbox ,他实际上是使用 virtual box 创建了一个虚拟机来提供给你访问。

你就需要创建目录共享来写代码,这样就会造成很严重的 IO 问题,导致你的项目访问奇慢无比。

在 Windows 10 上面,你倒是可以使用 WSL 来使用 docker,然而 WSL 仍然没有逃过 IO 问题,不过 WSL 提供了一种方法,在 WSL 里面安装/运行 docker,这样比虚拟机稍微好一些(不需要 Docker-Desktop)、并且不能使用 /mnt/ ,你需要把你的项目全部放到 WSL 下面去,不过好在现在 IDE 都提供了 WSL 的支持,虽然看起来很蹩脚,现在你差不多可以愉快的使用 docker,但是 WSL 的实际体验也并不那么好……

要想极致的体验,你最好是使用 Linux 操作系统,不过就我遇到的而言,如 Ubuntu 桌面的软件使用体验并不太好,尤其是使用 php storm 的时候。

使用 docker 的好处是很多,但是把 docker 作为开发环境,并且找到一个舒适的开发方式,很麻烦。

当然有很多,甚至可以说不用 docker 的才是大部分。

毕竟不是只有互联网大厂才有软件开发,很多人看不起的传统软件外包其实才是占据 IT 行业的大部分人群

对于你的顾虑,我只能说,压根没有 CI/CD 流程或 DevOps 体系建设不好的团队,用 docker 确实往往麻烦 > 收益。但路当然都是一步一步走出来的,哪能一口吃个胖子呢?

P.S. 我公司反正是全部产品线都有在用。


补充:对于另一个回答的一些见解

image.png

docker做开发环境?这是怎样的脑回路才能想出来的玩意?真以为docker包打天下了?

原来搞 python 、java 、ruby 的时候,都在本机搭开发环境,后来有了 docker,直接把开发环境建到 docker 中,然后把源码映射到容器中去,这样各个开发环境都是隔离的,而且也提高了部署效率。 看看我这个项目(https://gitlab.com/Kangjier/d...
有条件,一定要上虚拟化平台进行开发。好处如下:
1.如果只在一台物理机里开发,各种东西,比如 java 、C++、python 都要安装,而且有些软件比如 java 还要安装几个版本。混乱的环境,给开发会带来很多问题,处理起来,又好气又好笑,简直浪费时间。
虚拟化环境就没这个问题,先建立一个干净的模板,然后直接复制粘贴一堆出来,每个克隆后的环境,只安装一个系统。这样干净的系统,基本上不会出问题。
2.如果只在一台物理机里开发,你还要安装 QQ 与微信等一堆软件。这些东西就是祸源。如果长期不关机,这些软件经常搞坏 explorer.exe ,会出各种奇怪问题,比如桌面上,鼠标右键菜单没办法弹出来,有时候远程桌面又无法复制粘贴,等等。
出现了这种问题,系统得重启,但我已经打开了一大堆浏览器,里面很多资料还没看完;以及当前一堆软件开着一堆源码,在重启后,还要按顺序打开,特别浪费时间。
自从我把微信与 QQ,专门放到一台 IM 的虚拟化环境中去之后,再也没出过这种问题。微信与 QQ 想捣乱,直接重启那个虚拟化环境就行了,不影响开发。我甚至把开发、网页浏览、IM 、数据库软件等等,每一种工作,专门部署在一个虚拟化环境里,互相不影响。甚至连 Java 开发,也是部署了 3 个环境,一个给 8,一个 11,一个最新版。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏