各位开发还在本机搭环境还是用 docker? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
chengdonghui

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

  •  1
     
  •   chengdonghui May 6, 2021 14218 views
    This topic created in 1820 days ago, the information mentioned may be changed or developed.

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

    78 replies    2021-06-18 06:58:42 +08:00
    varzy
        1
    varzy  
       May 6, 2021 via iPhone
    前端开发,不可能保证所有环境都 docker 解决,现在又回到 brew install 了事
    defunct9
        2
    defunct9  
       May 6, 2021
    k8s
    letitbesqzr
        3
    letitbesqzr  
       May 6, 2021   5
    以前折腾过,后来发现还是太麻烦了....

    我感觉 单机或者特小规模的部署环境,docker 只会带来更大的工作量...
    zzzmh
        4
    zzzmh  
       May 6, 2021   2
    java 开发环境里除了 java tomcat 以外的都放 docker 比如 redis mysql mongo 之类的
    放 docker 不要太方便(主力开发都在 linux,如果是 windows 就需要 virtualbox 跑 docker 略微麻烦一丢丢)
    算了下内存也要比物理机直接装节约了(原理不懂 可能是限制可用内存后程序能自己调整?或者不够以后用了 swap ?)
    而且切换版本也可以分分钟搞定,也可以多版本共存。。。
    chengdonghui
        5
    chengdonghui  
    OP
       May 6, 2021
    @varzy 前端开发,不管 vue 还是 react,方式一样啊,docker+docker-compose,如果网速够快,搭建个开发环境,10 分钟搞定
    varzy
        6
    varzy  
       May 6, 2021
    @chengdonghui #5 主要是小程序啦,flutter 啦,这一大堆。node 相关的倒还好~
    akagishigeru
        7
    akagishigeru  
       May 6, 2021
    本地开发吧 挺方便的
    brader
        8
    brader  
       May 6, 2021   1
    来啦来啦,又要推荐我的 https://github.com/wenshunbiao/docker
    chengdonghui
        9
    chengdonghui  
    OP
       May 6, 2021
    @brader star 了
    everyx
        10
    everyx  
       May 6, 2021
    前端,vscode + docker,方便
    zjsxwc
        11
    zjsxwc  
       May 6, 2021 via Android
    我是在 vagrant 里套 docker,换电脑贼方便,就是一个 box 到处复制。

    捂脸
    billlee
        12
    billlee  
       May 6, 2021
    主力 Java, 不用 docker, 反正不会污染系统环境

    python 会用 docker
    walpurgis
        13
    walpurgis  
       May 6, 2021 via Android
    后端本地起数据库必上 docker,否则端口和目录烦死,开发环境还是虚拟机直接点
    xuanbg
        14
    xuanbg  
       May 6, 2021
    有一套内网的开发环境,里面跑着所有服务的 docker 容器,基本上和生产环境也没什么两样。然后,如果我在迭代 A 服务,到自测的时候,把这个环境里面的 A 容器停掉,由我本地的服务替代它。同事如果在迭代 B 服务,自测的时候同样停掉环境里面的 B 容器。自测完成,正常发布到测试环境提测。测试完成再同时发布到开发环境和生产环境。
    knightdf
        15
    knightdf  
       May 6, 2021
    从不用 docker,本地开发还用这个感觉很鸡肋
    kevtyle
        16
    kevtyle  
       May 7, 2021 via Android
    @chengdonghui 之前试过在里面部署 vue 环境,但是热更新太慢了就没用了,我这样是错误用法?
    coolcoffee
        17
    coolcoffee  
       May 7, 2021
    docker 有环境隔离,可以反复试验各种特性以及回滚。 所以建议用 docker 搭建环境练手,练完再扔。

    Mac 上的 Docker 本质上还是虚拟机,经常内存暴涨。反正我已经习惯了直接 brew 装环境开发,需要编排 Dockerfile 的时候就通过 VS Code Remote 连接调试。
    ClericPy
        18
    ClericPy  
       May 7, 2021
    docker 有时候各种限制挺别扭的, 偶尔用到 Ubuntu 的 multipass

    至于开发环境, vscode / chrome 带同步, 项目依赖一句 make dev install 直接本地创建 venv 了, Python 版本用 pyenv install, 没感觉啥大问题... 至于部署, 统一 Jenkins 打包机上跑, 再也不本地打包了, 太挫了...
    GG668v26Fd55CP5W
        19
    GG668v26Fd55CP5W  
       May 7, 2021 via iPhone
    本地开发没必要上 docker,Linux 还好,Mac 上体验极差
    Weixiao0725
        20
    Weixiao0725  
       May 7, 2021
    @zzzmh database 不是应该放在一个公用的测试服务器上吗?
    ericls
        21
    ericls  
       May 7, 2021 via iPhone
    Linux 上用 就是把不同的服务当成 binary 就行了

    别的平台 overhead 巨大
    gBurnX
        22
    gBurnX  
       May 7, 2021   4
    有条件,一定要上虚拟化平台进行开发。好处如下:

    1.如果只在一台物理机里开发,各种东西,比如 java 、C++、python 都要安装,而且有些软件比如 java 还要安装几个版本。混乱的环境,给开发会带来很多问题,处理起来,又好气又好笑,简直浪费时间。

    虚拟化环境就没这个问题,先建立一个干净的模板,然后直接复制粘贴一堆出来,每个克隆后的环境,只安装一个系统。这样干净的系统,基本上不会出问题。


    2.如果只在一台物理机里开发,你还要安装 QQ 与微信等一堆软件。这些东西就是祸源。如果长期不关机,这些软件经常搞坏 explorer.exe ,会出各种奇怪问题,比如桌面上,鼠标右键菜单没办法弹出来,有时候远程桌面又无法复制粘贴,等等。

    出现了这种问题,系统得重启,但我已经打开了一大堆浏览器,里面很多资料还没看完;以及当前一堆软件开着一堆源码,在重启后,还要按顺序打开,特别浪费时间。

    自从我把微信与 QQ,专门放到一台 IM 的虚拟化环境中去之后,再也没出过这种问题。微信与 QQ 想捣乱,直接重启那个虚拟化环境就行了,不影响开发。我甚至把开发、网页浏览、IM 、数据库软件等等,每一种工作,专门部署在一个虚拟化环境里,互相不影响。甚至连 Java 开发,也是部署了 3 个环境,一个给 8,一个 11,一个最新版。
    a719031256
        23
    a719031256  
       May 7, 2021
    看你开发做什么
    用于工作:本地环境
    用于折腾:docker
    garlics
        24
    garlics  
       May 7, 2021
    windows 下 docker io 有点慢,一直没找到方法解决这个问题。
    darknoll
        25
    darknoll  
       May 7, 2021
    docker 太麻烦了,不太想用
    chengdonghui
        26
    chengdonghui  
    OP
       May 7, 2021
    @gBurnX 同意,docker 开发,在环境配置,依赖安装方面提高了很多效率,同时也避免因为环境的问题导致的 bug
    chengdonghui
        27
    chengdonghui  
    OP
       May 7, 2021
    @kevtyle 热更新慢,有可能是 docker 中 volume 的问题,volume 到本地源代码目录的映射,好像读写效率很低,不过也有解决办法
    MeteorCat
        28
    MeteorCat  
       May 7, 2021 via Android
    虚拟机专门弄个开发环境就行了
    learningman
        29
    learningman  
       May 7, 2021 via Android
    yarn 啊,node 啊之类的装在物理机上,数据库放在 docker 里
    rf99wSiT6IxH1Z23
        30
    rf99wSiT6IxH1Z23  
       May 7, 2021
    数据库都放 docker 里面吧
    bthulu
        31
    bthulu  
       May 7, 2021
    @gBurnX 这么多虚拟机, 不累吗你. 直接宿主机里装好, 简单省事性能好运行快. QQ 微信这一堆软件, 我还真没见过搞坏过 explorer.exe 的
    chengdonghui
        32
    chengdonghui  
    OP
       May 7, 2021
    docker 做开发环境还有一个好处,团队复制开发环境非常简单,docker + docker-compose,代码用 git clone 下来,docker-compose build,环境就好了
    abcbuzhiming
        33
    abcbuzhiming  
       May 7, 2021
    @gBurnX 想知道你的“有条件”,是指的什么条件,虚拟化对硬件性能要求不低的
    lkxjlkejwr
        34
    lkxjlkejwr  
       May 7, 2021
    全程 docker + vsc remote 非常方便,回老家也不一定背电脑回去,直接按量付费开一台分分钟就回来了
    lozzow
        35
    lozzow  
       May 7, 2021
    没觉得装一堆东西很难受吗,用 docker 用完直接删除就 ok 了,清爽
    Chingim
        36
    Chingim  
       May 7, 2021
    @gBurnX "截图发送给同事"这种需求, 虚拟机里的微信能满足吗?
    yiqiao
        37
    yiqiao  
       May 7, 2021
    虚拟机搭建环境开发
    konakona
        38
    konakona  
       May 7, 2021
    其实本地开发不适合、也不建议用 docker,除非是对立端的部署,比如你是前端,后端程序你不需要改但是要部署在本地方便你联调的。
    arischow
        39
    arischow  
       May 7, 2021 via iPhone
    想问问前端理想中的开发环境是什么样?我想总会有用到后端环境的需求?
    wangxiaoaer
        40
    wangxiaoaer  
       May 7, 2021
    @gBurnX #22 虚拟化平台指的是什么?虚拟机吗?
    iSecret
        41
    iSecret  
       May 7, 2021
    @zjsxwc 我之前也是这种方案,后来直接用 vagrant 了,项目比较大文件很多,同步文件受 io 影响很大。
    mingl0280
        42
    mingl0280  
       May 7, 2021
    C++硬件开发,虚拟机都用不了还 docker……
    zjsxwc
        43
    zjsxwc  
       May 7, 2021
    @iSecret

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

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

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

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

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

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

    问题是,一旦这种东西都做好了,直接起飞。比如临时想要 3 个不同的环境,直接克隆,分分钟的事情。
    gBurnX
        60
    gBurnX  
       May 7, 2021
    @abcbuzhiming 条件,指的是至少要有一台高配虚拟化物理服务器。虚拟化是对硬件性能要求不低,但作为生产工具,这是值得的。
    gBurnX
        61
    gBurnX  
       May 7, 2021
    @Chingim 能。截图后直接复制粘贴就行了。
    gBurnX
        62
    gBurnX  
       May 7, 2021
    @wangxiaoaer 虚拟化平台有很多种,比如 VMware 的 ESXi 或 WorkStation 、Oracle 的 VM VirtualBox 、Windows Hyper-V 、docker 、k8s 等等。只要能达到环境隔离的目的就行了。
    gBurnX
        63
    gBurnX  
       May 7, 2021
    @bthulu 另外关于 QQ 与微信这些软件,你可以连续开机一个月试试,在电脑里开三个五 QQ,以及至少 2 个微信,看看有没有问题。
    freak118
        64
    freak118  
       May 7, 2021
    不是吧 前端有什么必要用 docker 啊
    qile1
        65
    qile1  
       May 7, 2021 via Android
    @garlics 我是 window 安装 oracle 虚拟机,里面安装 win10 和我本地系统配置一样,部署 python 后慢的没法用,服务器分配了八核 cpu 还是慢的不行,后来直接把 fastapi 打包成 exe,复制 5 个批量运行在 window 系统用 nginx 做负载才好了,谁让我们用的业务数据库是 sql server 呢!要不早都换成 docker 玩了
    chaleaoch
        66
    chaleaoch  
       May 7, 2021
    纯 docker
    宿主机系统只装 GUI 客户端 + vscode 剩下都是 docker 解决.

    因为宿主机是 windows 没办法.如果给我一台 mac... 另说`
    zjsxwc
        67
    zjsxwc  
       May 8, 2021
    @zxCoder

    性能最大的限制的 io,我上面说了换 nfs 后,体验和本地没多少区别,
    限制是宿主机只能是 Linux 或者 macOS,windows 不支持的。
    bthulu
        68
    bthulu  
       May 8, 2021
    @gBurnX 上班开机, 下班关机, 怎么会出现连续开机一个月的情况
    bthulu
        69
    bthulu  
       May 8, 2021
    @qile1 微软官方 docker 版 sqlserver, https://hub.docker.com/_/microsoft-mssql-server
    findex
        70
    findex  
       May 9, 2021 via iPhone
    用 podman 吧,开源比 docker 可靠
    junksheng
        71
    junksheng  
       Jun 11, 2021
    请问 jdk 放 docker 后, idea 怎么连接 docker 进行编译哇?
    junksheng
        72
    junksheng  
       Jun 11, 2021
    @zzzmh 想知道 jdk 编译环境也放 docker 里面吗
    zzzmh
        73
    zzzmh  
       Jun 11, 2021
    @junksheng 开发的机器,我是只用 redis mysql 之类的,线上环境用 nginx tomcat redis mysql 之类的
    junksheng
        74
    junksheng  
       Jun 11, 2021 via Android
    @zzzmh 也就是说只是把 Redis,MySQL 这些服务放在 docker 内,在开发的时候连接,但是编译和调试还是要本地环境 jdk 对吗
    zzzmh
        75
    zzzmh  
       Jun 11, 2021
    @junksheng 本地环境 jdk 和 tomcat 放 docker 不方便。感觉意义也不大。redis 和 mysql 合适,切换方便
    junksheng
        76
    junksheng  
       Jun 12, 2021
    @zzzmh 主要是会用到多个 jdk 版本, 放在一起感觉环境会很乱...
    peihuan
        77
    peihuan  
       Jun 18, 2021   1
    @junksheng jenv 了解一下
    junksheng
        78
    junksheng  
       Jun 18, 2021 via Android
    @peihuan 有道理,但我已经解决了,谢谢了嗷
    About     Help     Advertise     Blog     API     FAQ     Solana     1574 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 144ms UTC 16:22 PVG 00:22 LAX 09:22 JFK 12:22
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86