V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iicoder
V2EX  ›  Apple

M1 可以当主力开发了

  •  
  •   iicoder · 2020-12-25 09:09:03 +08:00 · 12454 次点击
    这是一个创建于 1212 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这两天机器刚到,首先测试了一波 Docker,我本身是搞 PHP 的,所以拿 Laradock 测试了一番。

    运行了几个容器, Nginx 、MySQL (不支持)、mariadb 、redis 、elasticsearch 、kibana

    除了 MySQL 不支持其他都支持。 所以我们可以使用 mariadb 来进行代替。 另外 workspace nvm 一直报错,workspace 容器装不了 node 和 yarn,所以需要去掉 设置为 false WORKSPACE_INSTALL_NODE=falseWORKSPACE_INSTALL_YARN=false

    Docker

    Docker

    不知道为啥 node 就是装不上,已经设置代理、镜像 hosts 文件也改了就是不生效

    第 1 条附言  ·  2020-12-25 15:21:54 +08:00
    首先我说下,标题我的锅,我就不应该命名此标题,对不起,打扰大家了
    另外。我想说的是 我们友好的讨论呗,感觉满满的火药味........我们都没错,都是在说自己的观点,自己的观点不代表别人
    79 条回复    2020-12-26 12:21:46 +08:00
    Damenly1
        1
    Damenly1  
       2020-12-25 09:18:05 +08:00
    但是 brew 很多包都是有问题的。。rust nightly 是可以跑了,但是 brew 上还没跟上,然后导致 virt-manager 安不上。qemu 的主线其实也可以手动编译了,brew 也没跟上。。折腾这种包依赖就很难受
    yaphets666
        2
    yaphets666  
       2020-12-25 09:18:37 +08:00   ❤️ 59
    不要自己骗自己了
    dinghao188
        3
    dinghao188  
       2020-12-25 09:19:54 +08:00   ❤️ 5
    机器刚到说这话,情有可原
    iicoder
        4
    iicoder  
    OP
       2020-12-25 09:22:35 +08:00
    @Damenly1 brew 还好 其实设置一下无差别吧
    iicoder
        5
    iicoder  
    OP
       2020-12-25 09:23:21 +08:00
    @dinghao188 我还好,docker 能用就行,我折腾的不多
    whileFalse
        6
    whileFalse  
       2020-12-25 09:23:32 +08:00
    可歇着吧……你跑的 Docker 架构都不一样……从公司的私有仓库下个镜像都跑不起来……
    iicoder
        7
    iicoder  
    OP
       2020-12-25 09:25:02 +08:00
    @whileFalse 我目前可以跑,反正我们都是 composer
    hjc4869
        8
    hjc4869  
       2020-12-25 09:28:43 +08:00 via Android   ❤️ 2
    用 M1 开发出来的都是 ARM docker 镜像,得找个 AWS 之类的服务商才能部署…
    joe7z
        9
    joe7z  
       2020-12-25 09:29:36 +08:00
    所以說買之前需要看自己的需求。有的人夠用了,有的人不能當作工作機
    iicoder
        10
    iicoder  
    OP
       2020-12-25 09:30:49 +08:00
    @joe7z 对的,生态还需要走,不过对于我来说本地开发够用了,
    ersic
        11
    ersic  
       2020-12-25 09:32:05 +08:00
    干前端的应该可以
    acorngyl
        12
    acorngyl  
       2020-12-25 09:34:17 +08:00
    不明白为什么都在本地打镜像,难道公司都没环境吗?我就是学习的时候装过一次 docker,后来连开都没开过,都是哪个环境用,ssh 上去,远程操作。
    iicoder
        13
    iicoder  
    OP
       2020-12-25 09:35:27 +08:00
    @ersic 前端我昨天测试了,VueCLI,Nuxt 都可以
    tees
        14
    tees  
       2020-12-25 09:37:25 +08:00
    用这个镜像 mysql/mysql-server
    laoertongzhi
        15
    laoertongzhi  
       2020-12-25 09:39:16 +08:00
    喜闻乐见
    iicoder
        16
    iicoder  
    OP
       2020-12-25 09:40:04 +08:00
    @tees 收到,感谢感谢
    whileFalse
        17
    whileFalse  
       2020-12-25 09:48:25 +08:00   ❤️ 1
    @joe7z
    > 所以說買之前需要看自己的需求。有的人夠用了,有的人不能當作工作機

    你说的对。LZ 搞 PHP 的弄 Docker 跑的挺开心。我是运维,我用 Docker 跟 LZ 就不一概念,我用 M1 Dockerfile 都未必能调通。
    YouLMAO
        18
    YouLMAO  
       2020-12-25 10:04:46 +08:00 via Android
    惊,你们分布式测试,不开 20 个个容器测试的,在 m1 单机模拟集群,而是单机模拟单机有啥好模拟的,装 Windows 算了
    wengych
        19
    wengych  
       2020-12-25 10:10:14 +08:00   ❤️ 1
    Java 开发,已经用了两周,日常 IntelliJ IDEA 双开到三开,没任何问题。
    victorzhou6
        20
    victorzhou6  
       2020-12-25 11:20:28 +08:00
    @acorngyl 确实,打 docker 是 ci 的一环,公司有专用的 build 机
    bazingarick7
        21
    bazingarick7  
       2020-12-25 11:26:44 +08:00
    哈哈我觉得好好用,开发 java 也还行。从 16 到 M1 。可太喜欢了。就是每天日常几次死机。
    MaxLi77
        22
    MaxLi77  
       2020-12-25 11:44:05 +08:00
    可能我们开发的不是同一种东西
    mankismi
        23
    mankismi  
       2020-12-25 11:53:08 +08:00
    @wengych 问下内存多少呢?有开其他软件吗?
    wengych
        24
    wengych  
       2020-12-25 11:54:50 +08:00   ❤️ 2
    @hsuchihche M1 8G,日常大概就下面这些

    wengych
        25
    wengych  
       2020-12-25 12:06:19 +08:00
    每个人的工作场景都不同,解释下为什么我用 M1 能够完成完整工作流

    主要工作工具:
    1. IntelliJ IDEA,Java 开发必备
    2. VS Code 阅读同事的 C++代码,查接口
    3. MacVim 日常文本编辑
    4. 沟通工具:微信+企业微信
    5. Music: Spotify
    6. 浏览器:Safari 工作用途,chrome 查阅资料,Firefox 强制代理
    7. Terminal
    8. 1Password
    9. Tunnelblick 配合 Surge 解决网络流量分流,办公流量和那啥区分开

    本地开发基本不用 MySQL,而是使用 SpringBootTest 启动一个容器,通过 org.zapodot:embedded-db-junit-liquibase 跑 in mem db 进行测试。集成测试环境有 aws RDS 。

    M1 的稳定性确实不行,上周二、周三都遇到了死机重启的情况,所以我目前遇到机器卡顿的情况就直接重启一次,死机的情况暂时没有复现了。
    Administrat0r
        26
    Administrat0r  
       2020-12-25 12:37:18 +08:00   ❤️ 1
    1. 主用 node,工作上用到的库都没问题,egg koa graphql pm2 这些
    2. 编译了原生的 node,有些情况下性能反而没转译的高
    3. mongodb 转译可运行,目前没发现有啥问题
    3. 浏览器 safari 和 chrome 都没问题,目前 Safari 用得多
    4. vscode 有 inside 原生支持,stable 的转译也可用,不过原生的性能要好很多
    5. vscode 目前有个 bug 是填写 git commit 的备注如果是用输入法的话,此时 git 自动刷新会使输入失去焦点,导致无法输入,这个全版本都有的问题
    6. 微信可用,但经常会崩,现在基本至少一天一次
    7. 性能叼,同一个前端项目 mbp i5+16g 编译要 100 秒以上,m1 mini 8g 只要 90 秒
    8. 不发热,比我的心还冷

    总结:香的很
    chrisia
        27
    chrisia  
       2020-12-25 13:30:33 +08:00
    不是有个 mysql-server 支持 arm 吗?
    chrisia
        28
    chrisia  
       2020-12-25 14:12:58 +08:00
    @hjc4869 可以打包成 x86 镜像的,只不过不能直接运行 x86 镜像,也就是说公司里面老的镜像可能不能运行
    jin5354
        29
    jin5354  
       2020-12-25 14:14:34 +08:00
    @Administrat0r 常态比 37° 还要低?
    timepast
        30
    timepast  
       2020-12-25 14:15:26 +08:00 via Android
    @bazingarick7 死机???
    keepeye
        31
    keepeye  
       2020-12-25 14:18:00 +08:00   ❤️ 1
    标题应该改成:M1 可以当我的主力开发了
    hjc4869
        32
    hjc4869  
       2020-12-25 14:19:46 +08:00
    @chrisia 跨架构打包没法随时在本地测试,docker 的意义丧失了一大半。
    Administrat0r
        33
    Administrat0r  
       2020-12-25 14:27:23 +08:00
    @jin5354 没有测温工具 反正手摸上去都是冰冷的 相反我之前的 mbp 一直都是温热煎蛋状态
    wengych
        34
    wengych  
       2020-12-25 14:35:37 +08:00
    @hjc4869 docker build 都是在 ci 服务器上跑,和本地有啥关系呢?作为一个写了超过 100+Dockerfile 、超过 2w 行 yaml 的新手,不明白你为什么有这样的疑问。
    wengych
        35
    wengych  
       2020-12-25 14:36:14 +08:00
    @timepast 确实会出现死机重启的情况,手里这台 M1 甚至因为兼容性问题烧掉了我一块 10T 希捷硬盘,损失惨重。
    hjc4869
        36
    hjc4869  
       2020-12-25 14:38:13 +08:00
    @wengych 干脆 rdp 到服务器上开发,那样本地只需要一个树莓派级别的性能就够当主力了。
    chrisia
        37
    chrisia  
       2020-12-25 14:38:20 +08:00
    @wengych 问一下大佬,后端现在用 m1 开发,基本的环境和工具应该都具备了吧,我的刚到手,准备换成主力机
    chrisia
        38
    chrisia  
       2020-12-25 14:40:16 +08:00
    @wengych 还有会不会有从私有服务器 pull x86 镜像的情况,因为目前好像不支持直接运行 x86 镜像,倒是可以打包成 x86 镜像
    wengych
        39
    wengych  
       2020-12-25 14:47:25 +08:00
    @chrisia docker 本地还是有很多问题,我已经放弃在本地依赖 docker,性能太差了。
    wengych
        40
    wengych  
       2020-12-25 14:47:44 +08:00
    @hjc4869 本地工具链已经齐了不知道怎么来的 RDP 需求?
    iicoder
        41
    iicoder  
    OP
       2020-12-25 14:48:41 +08:00
    @keepeye 嗯,草率了确实应该改成这样的....
    lqf96
        42
    lqf96  
       2020-12-25 14:52:04 +08:00
    https://docs.docker.com/buildx/working-with-buildx/
    目前跨架构的 docker contrainer 需要开启 buildx 功能,因为是 qemu 的关系性能可能会下降,但应该是可以的...
    hjc4869
        43
    hjc4869  
       2020-12-25 14:54:06 +08:00
    @wengych 所以你的工作流到底是怎样的?修一点小问题,本地 Dockerfile 改了一个字都要去 CI 上 build 然后跑测试吗?
    wengych
        44
    wengych  
       2020-12-25 14:58:45 +08:00
    @hjc4869 我一个臭写 java 的为什么要本地 docker build ?一个 java 进程的问题你都要扯 docker 进来?
    wengych
        45
    wengych  
       2020-12-25 14:59:18 +08:00
    @hjc4869 mvn clean test
    that's all
    hjc4869
        46
    hjc4869  
       2020-12-25 15:00:17 +08:00
    @wengych 那你根本不需要进来回这个帖子。。整个帖子都是在讨论在本地跑 docker
    wengych
        47
    wengych  
       2020-12-25 15:01:29 +08:00
    @hjc4869 M1 可以当主力开发了
    主力开发必须要有 docker ?
    bsg1992
        48
    bsg1992  
       2020-12-25 15:27:32 +08:00
    @wengych 主力开发 为什么不能有 docker
    wengych
        49
    wengych  
       2020-12-25 15:28:10 +08:00
    @bsg1992 可以有,为什么必须有。
    bsg1992
        50
    bsg1992  
       2020-12-25 15:39:57 +08:00
    @wengych 依赖服务,数据库,缓存 ,mq 之类的东西装在 docker 方便,我私下里也有自己的项目需要维护本地环境肯定重要的,还有不是每个人搞 java php 的。
    wengych
        51
    wengych  
       2020-12-25 15:41:11 +08:00 via iPhone
    @bsg1992 是的你说的没错,每个人场景不同,对于你来说也许当不了,但不影响我已经 996 用了 10 天 m1
    wengych
        52
    wengych  
       2020-12-25 15:42:15 +08:00 via iPhone
    @bsg1992 另外我一直很不习惯把所有东西都跑本地,很重,能用 ut 搞定的就尽量在一个进程内搞定测试。
    dai875939260
        53
    dai875939260  
       2020-12-25 15:43:43 +08:00
    你们的 mac 都是开 docker 部署数据库,nginx 这些的么,docker 吃内存耗电量又大,平时我都不敢开
    bsg1992
        54
    bsg1992  
       2020-12-25 15:55:23 +08:00
    @wengych 我这里需要跑多个区块链节点测试程序 还要跑智能合约,必须要跑 docker 。这种情况本地环境优于服务器太多了
    wengych
        55
    wengych  
       2020-12-25 15:57:06 +08:00 via iPhone
    @bsg1992 所以抛开场景讨论没意义啊
    wengych
        56
    wengych  
       2020-12-25 15:57:47 +08:00 via iPhone
    @bsg1992 docker 优化还需要很久,估计至少明年春节后才能有很好的可用性
    felixcode
        57
    felixcode  
       2020-12-25 16:01:43 +08:00 via Android
    所以买之前还是得考虑好了,别人好用是因为只跑个 ide 和浏览器,docker 不好用,虚拟机支持不那么好,打定主意以后只做本地开发不运行服务再买 m1 吧,别被人误导了。
    Badlion
        58
    Badlion  
       2020-12-25 16:28:11 +08:00
    @felixcode 我同样需要运行服务,难道只能本地跑 docker,而不能跑在我的 NAS 上吗?
    vexjoe
        59
    vexjoe  
       2020-12-25 16:32:39 +08:00
    @acorngyl 不是所有人都用公司环境就够了,别人还有个人项目呢
    felixcode
        60
    felixcode  
       2020-12-25 16:35:12 +08:00
    @Badlion
    所以用 m1 要运行服务的话,就得标配一台 NAS 或者远程服务器?
    就这个样子,还配做主力开发机?还能称为主力吗?只是个远程终端吧?
    4000 多的 windows 笔记本都比不上。
    Badlion
        61
    Badlion  
       2020-12-25 16:49:15 +08:00 via iPhone
    @felixcode 我用 16 寸 64g 时都不觉得需要安装 docker,docker 大都是用来跑服务的,跑在本地合适吗?如果 macbook 盒盖了呢?而且我有多台 mac 和 windowspc 都需要共享服务呢?
    felixcode
        62
    felixcode  
       2020-12-25 16:52:36 +08:00
    @Badlion
    所以你要运行个数据库用来调试程序,或者开发个 WEB 调试在服务器上的部署的话,就得呆在家里,或者连 VPN 到你的 NAS ?
    Badlion
        63
    Badlion  
       2020-12-25 17:05:04 +08:00 via iPhone
    我 nas 有公网 ip,随时随地访问都没问题
    @felixcode
    banricho
        64
    banricho  
       2020-12-25 17:06:27 +08:00
    @ersic 也并不全是。。。小程序开发者工具警告(这也算前端吧)
    hugebox
        65
    hugebox  
       2020-12-25 17:23:10 +08:00
    可以看看 java 开发评测,基本没什么大问题。当然前提是你公司用 jenkins 推包到服务器,否则本地 ARM 打的包不知道服务器运行会不会有问题。
    wengych
        66
    wengych  
       2020-12-25 17:34:17 +08:00
    @hugebox 理论上不应该有问题,java 不就是 write once,debug anywhere 么。。。。
    ShadowPower
        67
    ShadowPower  
       2020-12-25 17:34:26 +08:00
    @bsg1992 两年前我做过这个,用的 HyperLedger,那玩意的 chaincode (类似于智能合约)跟 Docker 是绑死的……
    在本地调试调试智能合约,还真的比用服务器跑着调要来得方便
    那会不用 M1,直接用 Linux 当开发环境,就已经有很多坑了,要是用这个,还不知道会有多少坑
    hiw2016
        68
    hiw2016  
       2020-12-25 18:54:59 +08:00 via iPhone
    @wengych 你好,请问 gitlab 图标是什么 app 呀
    wengych
        69
    wengych  
       2020-12-25 18:56:31 +08:00 via iPhone   ❤️ 1
    @hiw2016 就是 gitlab,公司的 gitlab 打包成了一个 app 而已
    wengych
        70
    wengych  
       2020-12-25 19:06:45 +08:00   ❤️ 1
    @hiw2016 https://webcatalog.app/ 用这个 app 将 web 站点生成为桌面 app,也有命令行的工具 nativefier https://github.com/jiahaog/nativefier,一个作者
    holulu
        71
    holulu  
       2020-12-25 19:08:52 +08:00
    今年开始已经不在本地机跑容器了,都是直接用公司的 k8s 开发集群作为开发环境。换了 M1 的 MBA,最主要感受就是没噪音,不烫手。
    felixcode
        72
    felixcode  
       2020-12-25 19:28:44 +08:00 via Android
    @Badlion
    把服务都暴露在公网,还是做好安全吧,别 nas 被黑了,数据无价
    Badlion
        73
    Badlion  
       2020-12-25 19:32:40 +08:00 via iPhone
    @felixcode 我没说是暴露所有服务,只是 ssh 管道而已。配置了免密+otp
    xuanbg
        74
    xuanbg  
       2020-12-25 19:38:29 +08:00
    docker 架构不同问题倒也不是很大,大家生产环境用的镜像也不会用你的 mbp 上面 build 的镜像。

    我们嫌弃上传镜像太慢,就直接传打好的包和 dockerfile 到目标环境再 build 镜像并运行,根本不用镜像仓库的。
    googls
        75
    googls  
       2020-12-25 20:45:38 +08:00
    公司的 8 核 8gVPS 够用🐶
    mac 目前就跑 datagrip+代码编辑器+postman
    BoiledEgg
        76
    BoiledEgg  
       2020-12-25 22:46:07 +08:00
    搞开发还是有不少坑的,别说后端了,前端搞搞 js 的都有坑,比如如果项目用到了 sentry,会发现 sentry cli 需要自己编译一个 arm 的,不然 sentry-webpack-plugin 跑不起来。
    eggcn
        77
    eggcn  
       2020-12-26 04:31:23 +08:00
    好了,说了这么多那么问题来了~不要笑我,你们说的 M1 是啥?(黑人问号脸)
    MaverickLee
        78
    MaverickLee  
       2020-12-26 10:37:09 +08:00
    @eggcn M1 艾布拉姆斯(doge)
    7gugu
        79
    7gugu  
       2020-12-26 12:21:46 +08:00 via iPhone
    有点心动了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2621 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 01:49 · PVG 09:49 · LAX 18:49 · JFK 21:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.