iicoder
V2EX  ›  Apple

M1 可以当主力开发了

By iicoder at 2020 年 12 月 25 日 · 14165 次点击

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

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

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

Docker

Docker

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

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

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

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

我们嫌弃上传镜像太慢,就直接传打好的包和 dockerfile 到目标环境再 build 镜像并运行,根本不用镜像仓库的。
googls
   75
googls  
   2020 年 12 月 25 日
公司的 8 核 8gVPS 够用🐶
mac 目前就跑 datagrip+代码编辑器+postman
BoiledEgg
   76
BoiledEgg  
   2020 年 12 月 25 日
搞开发还是有不少坑的,别说后端了,前端搞搞 js 的都有坑,比如如果项目用到了 sentry,会发现 sentry cli 需要自己编译一个 arm 的,不然 sentry-webpack-plugin 跑不起来。
eggcn
   77
eggcn  
   2020 年 12 月 26 日
好了,说了这么多那么问题来了~不要笑我,你们说的 M1 是啥?(黑人问号脸)
MaverickLee
   78
MaverickLee  
   2020 年 12 月 26 日
@eggcn M1 艾布拉姆斯(doge)
7gugu
   79
7gugu  
   2020 年 12 月 26 日 via iPhone
有点心动了
© 2026 V2EX · 88ms · 3.9.8.5