原来搞 python 、java 、ruby 的时候,都在本机搭开发环境,后来有了 docker,直接把开发环境建到 docker 中,然后把源码映射到容器中去,这样各个开发环境都是隔离的,而且也提高了部署效率。
1
varzy 2021-05-06 17:30:59 +08:00 via iPhone
前端开发,不可能保证所有环境都 docker 解决,现在又回到 brew install 了事😂
|
2
defunct9 2021-05-06 17:36:58 +08:00
k8s
|
3
letitbesqzr 2021-05-06 17:37:06 +08:00 5
以前折腾过,后来发现还是太麻烦了....
我感觉 单机或者特小规模的部署环境,docker 只会带来更大的工作量... |
4
zzzmh 2021-05-06 17:45:22 +08:00 2
java 开发环境里除了 java tomcat 以外的都放 docker 比如 redis mysql mongo 之类的
放 docker 不要太方便(主力开发都在 linux,如果是 windows 就需要 virtualbox 跑 docker 略微麻烦一丢丢) 算了下内存也要比物理机直接装节约了(原理不懂 可能是限制可用内存后程序能自己调整?或者不够以后用了 swap ?) 而且切换版本也可以分分钟搞定,也可以多版本共存。。。 |
5
chengdonghui OP @varzy 前端开发,不管 vue 还是 react,方式一样啊,docker+docker-compose,如果网速够快,搭建个开发环境,10 分钟搞定
|
6
varzy 2021-05-06 18:07:31 +08:00
@chengdonghui #5 主要是小程序啦,flutter 啦,这一大堆。node 相关的倒还好~
|
7
JaguarJack 2021-05-06 18:15:30 +08:00
本地开发吧 挺方便的
|
8
brader 2021-05-06 18:18:05 +08:00 1
来啦来啦,又要推荐我的 https://github.com/wenshunbiao/docker 了
|
9
chengdonghui OP @brader star 了
|
10
everyx 2021-05-06 19:41:23 +08:00
前端,vscode + docker,方便
|
11
zjsxwc 2021-05-06 19:50:56 +08:00 via Android
我是在 vagrant 里套 docker,换电脑贼方便,就是一个 box 到处复制。
捂脸 |
12
billlee 2021-05-06 20:24:39 +08:00
主力 Java, 不用 docker, 反正不会污染系统环境
python 会用 docker |
13
walpurgis 2021-05-06 20:34:56 +08:00 via Android
后端本地起数据库必上 docker,否则端口和目录烦死,开发环境还是虚拟机直接点
|
14
xuanbg 2021-05-06 20:40:54 +08:00
有一套内网的开发环境,里面跑着所有服务的 docker 容器,基本上和生产环境也没什么两样。然后,如果我在迭代 A 服务,到自测的时候,把这个环境里面的 A 容器停掉,由我本地的服务替代它。同事如果在迭代 B 服务,自测的时候同样停掉环境里面的 B 容器。自测完成,正常发布到测试环境提测。测试完成再同时发布到开发环境和生产环境。
|
15
knightdf 2021-05-06 20:43:11 +08:00
从不用 docker,本地开发还用这个感觉很鸡肋
|
16
kevtyle 2021-05-07 00:40:26 +08:00 via Android
@chengdonghui 之前试过在里面部署 vue 环境,但是热更新太慢了就没用了,我这样是错误用法?
|
17
coolcoffee 2021-05-07 00:46:21 +08:00
docker 有环境隔离,可以反复试验各种特性以及回滚。 所以建议用 docker 搭建环境练手,练完再扔。
Mac 上的 Docker 本质上还是虚拟机,经常内存暴涨。反正我已经习惯了直接 brew 装环境开发,需要编排 Dockerfile 的时候就通过 VS Code Remote 连接调试。 |
18
ClericPy 2021-05-07 01:02:42 +08:00
docker 有时候各种限制挺别扭的, 偶尔用到 Ubuntu 的 multipass
至于开发环境, vscode / chrome 带同步, 项目依赖一句 make dev install 直接本地创建 venv 了, Python 版本用 pyenv install, 没感觉啥大问题... 至于部署, 统一 Jenkins 打包机上跑, 再也不本地打包了, 太挫了... |
19
falcon05 2021-05-07 01:39:47 +08:00 via iPhone
本地开发没必要上 docker,Linux 还好,Mac 上体验极差
|
20
Weixiao0725 2021-05-07 01:48:15 +08:00
@zzzmh database 不是应该放在一个公用的测试服务器上吗?
|
21
ericls 2021-05-07 02:13:20 +08:00 via iPhone
Linux 上用 就是把不同的服务当成 binary 就行了
别的平台 overhead 巨大 |
22
gBurnX 2021-05-07 03:31:48 +08:00 4
有条件,一定要上虚拟化平台进行开发。好处如下:
1.如果只在一台物理机里开发,各种东西,比如 java 、C++、python 都要安装,而且有些软件比如 java 还要安装几个版本。混乱的环境,给开发会带来很多问题,处理起来,又好气又好笑,简直浪费时间。 虚拟化环境就没这个问题,先建立一个干净的模板,然后直接复制粘贴一堆出来,每个克隆后的环境,只安装一个系统。这样干净的系统,基本上不会出问题。 2.如果只在一台物理机里开发,你还要安装 QQ 与微信等一堆软件。这些东西就是祸源。如果长期不关机,这些软件经常搞坏 explorer.exe ,会出各种奇怪问题,比如桌面上,鼠标右键菜单没办法弹出来,有时候远程桌面又无法复制粘贴,等等。 出现了这种问题,系统得重启,但我已经打开了一大堆浏览器,里面很多资料还没看完;以及当前一堆软件开着一堆源码,在重启后,还要按顺序打开,特别浪费时间。 自从我把微信与 QQ,专门放到一台 IM 的虚拟化环境中去之后,再也没出过这种问题。微信与 QQ 想捣乱,直接重启那个虚拟化环境就行了,不影响开发。我甚至把开发、网页浏览、IM 、数据库软件等等,每一种工作,专门部署在一个虚拟化环境里,互相不影响。甚至连 Java 开发,也是部署了 3 个环境,一个给 8,一个 11,一个最新版。 |
23
a719031256 2021-05-07 08:38:46 +08:00
看你开发做什么
用于工作:本地环境 用于折腾:docker |
24
garlics 2021-05-07 08:52:49 +08:00
windows 下 docker io 有点慢,一直没找到方法解决这个问题。
|
25
darknoll 2021-05-07 09:01:13 +08:00
docker 太麻烦了,不太想用
|
26
chengdonghui OP @gBurnX 同意,docker 开发,在环境配置,依赖安装方面提高了很多效率,同时也避免因为环境的问题导致的 bug
|
27
chengdonghui OP @kevtyle 热更新慢,有可能是 docker 中 volume 的问题,volume 到本地源代码目录的映射,好像读写效率很低,不过也有解决办法
|
28
MeteorCat 2021-05-07 09:06:51 +08:00 via Android
虚拟机专门弄个开发环境就行了
|
29
learningman 2021-05-07 09:08:03 +08:00 via Android
yarn 啊,node 啊之类的装在物理机上,数据库放在 docker 里
|
30
rf99wSiT6IxH1Z23 2021-05-07 09:10:19 +08:00
数据库都放 docker 里面吧
|
31
bthulu 2021-05-07 09:15:02 +08:00
@gBurnX 这么多虚拟机, 不累吗你. 直接宿主机里装好, 简单省事性能好运行快. QQ 微信这一堆软件, 我还真没见过搞坏过 explorer.exe 的
|
32
chengdonghui OP docker 做开发环境还有一个好处,团队复制开发环境非常简单,docker + docker-compose,代码用 git clone 下来,docker-compose build,环境就好了
|
33
abcbuzhiming 2021-05-07 09:26:06 +08:00
@gBurnX 想知道你的“有条件”,是指的什么条件,虚拟化对硬件性能要求不低的
|
34
MengiNo 2021-05-07 09:35:16 +08:00
全程 docker + vsc remote 非常方便,回老家也不一定背电脑回去,直接按量付费开一台分分钟就回来了
|
35
lozzow 2021-05-07 09:37:32 +08:00
没觉得装一堆东西很难受吗,用 docker 用完直接删除就 ok 了,清爽
|
37
yiqiao 2021-05-07 09:58:37 +08:00
虚拟机搭建环境开发
|
38
konakona 2021-05-07 10:09:27 +08:00
其实本地开发不适合、也不建议用 docker,除非是对立端的部署,比如你是前端,后端程序你不需要改但是要部署在本地方便你联调的。
|
39
arischow 2021-05-07 10:13:58 +08:00 via iPhone
想问问前端理想中的开发环境是什么样?我想总会有用到后端环境的需求?
|
40
wangxiaoaer 2021-05-07 10:50:37 +08:00
@gBurnX #22 虚拟化平台指的是什么?虚拟机吗?
|
42
mingl0280 2021-05-07 11:06:03 +08:00
C++硬件开发,虚拟机都用不了还 docker……
|
43
zjsxwc 2021-05-07 11:07:13 +08:00
@iSecret
宿主机 Linux 或 macOS 用 nfs 作为 synced_folder 类型,读写瞬开,特别快,默认的 vbox 共享文件 确实慢 https://www.vagrantup.com/docs/synced-folders/nfs |
44
ColinLi 2021-05-07 11:07:29 +08:00
本地开发为啥要用 docker ?用 docker 不是更麻烦吗,数据库搭建一个公共的开发数据库大家都能用,写代码的时候启动一个 idea 不就 ok 了
|
47
zjsxwc 2021-05-07 12:09:52 +08:00
@xingheng
vagrant 本身不占什么资源,主要是 virtualbox 虚拟机占用, 我这 VBoxHeadless 进程空跑也就 2%的样子, 如果使用了开发虚拟机里面的服务, 那么最大占用 cpu 就看你在 virtualbox 里分配了多少资源给开发虚拟机。 |
48
chenshun00 2021-05-07 12:11:44 +08:00
我是 mac,用 docker 装的一些环境,例如 mysql,redis/mongo,es,kibana,以及 RocketMQ(broker/ns),挺方便的,不过还是体现在开发环境方面. 切换机器只要装一下 docker 就可以了. dockerfile 这种都上传到 dockerhub 了。
|
49
ysicing 2021-05-07 12:51:30 +08:00
定制了 vagrantfile 很方便
服务的话用 docker & k8s |
50
xingguang 2021-05-07 13:24:01 +08:00
我在 docker 里 npm install 都要一个小时,遂放弃
|
51
zhaojames077 2021-05-07 14:08:39 +08:00
开发 Python 项目的时候会用 Docker,主要一些需要基于 C 的依赖(例如 mysqlclient )需要使用 brew 安装到机器上,略有些麻烦
|
52
iSecret 2021-05-07 14:16:48 +08:00
@xingheng 是的,空跑不占什么资源的,需要考虑的挂载导致的 io 瓶颈,我现在项目的文件是直接丢虚拟机里的,不走挂载,当然你需要有定时同步代码的习惯,不然哪天 box 坏了或者无法连接代码不会丢失。
|
53
Suomea 2021-05-07 14:47:54 +08:00
docker 方便的多啊
|
54
caixiaomao 2021-05-07 14:58:56 +08:00
redis mysql 等基本都用 docker
|
55
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 里,各种版本之类的不用管非常舒心 |
57
INTOX8O 2021-05-07 16:15:30 +08:00
Win WSL2+docker 真香
|
58
imycc 2021-05-07 16:29:29 +08:00
这题我会。本地一个虚拟机,搞 python web 开发和前端。
简单的开发直接本地部署,用 pyenv 管理多个项目,一个项目一个虚拟环境隔离开。前端本来就是一个项目一份依赖,再加上 nvm 管理多个 nodejs 版本,基本满足需要。 复杂业务就打包成镜像,用 docker-compose 编排一下各个服务的关联。 第三方服务、组件之类的,一律 docker 搞定。没啥特殊需求的直接用官方镜像,有特殊需求的还会自己重打个镜像。(比如数据库配置之类的) 开发的时候直接把代码目录挂进去容器内,调试效率不会比直接部署差。 |
59
gBurnX 2021-05-07 20:51:22 +08:00
|
60
gBurnX 2021-05-07 20:52:14 +08:00
@abcbuzhiming 条件,指的是至少要有一台高配虚拟化物理服务器。虚拟化是对硬件性能要求不低,但作为生产工具,这是值得的。
|
62
gBurnX 2021-05-07 20:54:59 +08:00
@wangxiaoaer 虚拟化平台有很多种,比如 VMware 的 ESXi 或 WorkStation 、Oracle 的 VM VirtualBox 、Windows Hyper-V 、docker 、k8s 等等。只要能达到环境隔离的目的就行了。
|
63
gBurnX 2021-05-07 20:57:14 +08:00
@bthulu 另外关于 QQ 与微信这些软件,你可以连续开机一个月试试,在电脑里开三个五 QQ,以及至少 2 个微信,看看有没有问题。
|
64
freak118 2021-05-07 21:06:20 +08:00
不是吧 前端有什么必要用 docker 啊
|
65
qile1 2021-05-07 21:36:53 +08:00 via Android
@garlics 我是 window 安装 oracle 虚拟机,里面安装 win10 和我本地系统配置一样,部署 python 后慢的没法用,服务器分配了八核 cpu 还是慢的不行,后来直接把 fastapi 打包成 exe,复制 5 个批量运行在 window 系统用 nginx 做负载才好了,谁让我们用的业务数据库是 sql server 呢!要不早都换成 docker 玩了
|
66
chaleaoch 2021-05-07 21:38:44 +08:00
纯 docker
宿主机系统只装 GUI 客户端 + vscode 剩下都是 docker 解决. 因为宿主机是 windows 没办法.如果给我一台 mac... 另说` |
67
zjsxwc 2021-05-08 08:24:35 +08:00
|
69
bthulu 2021-05-08 08:36:37 +08:00
@qile1 微软官方 docker 版 sqlserver, https://hub.docker.com/_/microsoft-mssql-server
|
70
findex 2021-05-09 00:18:26 +08:00 via iPhone
用 podman 吧,开源比 docker 可靠
|
71
junksheng 2021-06-11 00:00:55 +08:00
请问 jdk 放 docker 后, idea 怎么连接 docker 进行编译哇?
|
73
zzzmh 2021-06-11 09:38:20 +08:00
@junksheng 开发的机器,我是只用 redis mysql 之类的,线上环境用 nginx tomcat redis mysql 之类的
|
74
junksheng 2021-06-11 12:43:39 +08:00 via Android
@zzzmh 也就是说只是把 Redis,MySQL 这些服务放在 docker 内,在开发的时候连接,但是编译和调试还是要本地环境 jdk 对吗
|