mac 中的 docker 如何连接本机的 mysql ,数据库应该用 docker 吗?

2020-07-05 15:22:29 +08:00
 philsky28

首先描述下我现在本地的是一个 node 项目(nest.js),在连接 mysql 数据库的配置文件里(用的 typeorm )数据库链接地址写了 localhost 发现连接不上去,搜索了一下知道 docker 中的 localhost 不是本机 localhost,要把 localhost 换成 docker0 的 ip 地址才行,但是这时候我有了两个问题: 1,我本地是 mac,mac 中没有 docker0 网卡 2,docker 上传到 vps 生产环境后,他的 ip 地址会变化吗?如果变化的话际开发中如何保证在本地 ok 上生产后那些环境变量也能保证没问题呢?

网上搜的很多教程是把 mysql 也做成了 docker 镜像,但是好像也有很多人说数据库不应该使用 docker,现在大公司主流的做法究竟是什么呢?我是前端,这块学的很吃力,希望能有大佬解答一下。。。

6979 次点击
所在节点    Docker
45 条回复
miao1007
2020-07-05 20:02:41 +08:00
自己本地随便折腾 不会有性能问题
bfme
2020-07-05 20:04:17 +08:00
我是来看各位有何高见的。。瓜子板凳已备好。
bfme
2020-07-05 20:06:47 +08:00
就连个数据库 搞得这么麻烦。。
不用 docker 可以用宿主机内网 Ip+端口号访问啊,要是用 docker 就将数据挂载出来--link 就好了。
kchum
2020-07-05 20:40:05 +08:00
不用 docker-compose 吗? docker-compose 的话用 service name 还是 container name 就可以了,我两个都一样,你测试看看,这两个都不会变的
rockyou12
2020-07-05 21:40:24 +08:00
@niubee1 别装了,我生产用容器化的数据库用这么久了屁事都没有,只要应用本身对容器化支持得很好就完全 ok

mysql 这些只要不是特别高的负载其实随便用的,我之前有个一月写几十个 G 的 pg 数据库也是直接用的容器方案,同样没任何问题(当然,有些调优会麻烦)
matrix67
2020-07-05 21:42:10 +08:00
seafile 的 sql 就是用的容器
yanfany
2020-07-05 23:17:09 +08:00
歪个楼,不知道有没有谁知道 在服务器上的 docker 镜像使用不了 cmake gui 怎么解决,会报连接不到 X serve 的错误
CoderGeek
2020-07-05 23:26:34 +08:00
看需求 正常情况 用 rds 就已经很成熟了 弹性扩容之类的, 像 db 缓存等暂时还没用到过。
基本都是些 web 网关 脚本任务 一类的
CoderGeek
2020-07-05 23:27:30 +08:00
还有个人玩 mac 上在搞个容器库也没啥意义啊 本地有的话不省点资源嘛
LichMscy
2020-07-06 00:15:17 +08:00
问题 1: docker 容器间有 docker 的虚拟网络,docker inspect <containerName>可以查看容器的 IP ;问题 2: 上到生产环境,IP 可能会变,可以在启容器时指定固定 IP 。或者直接 docker-compose 启动,在一个网络下就不会有类似的问题了。docker 跑 mysql 没问题,非 docker 跑也没问题,个人觉得没必要纠结这个,楼主作为前端,快速 run 起来才是真,没必要纠结这些,可以复用别人成熟的方案。

针对于楼中某些人毫无帮助的言论,容器的确无状态服务会适合点,但是特定场景下有特定方案,statefulset 有状态的完全可以跑,只是横向扩展的分布式 DB 方案不太适合。完全没搞清楚楼主问的什么,上来就数据库不要上 Docker,我 docker 快速启个 MySQL 不行?回帖请看看右下角——“请尽量让自己的回复能够对别人有帮助”
initd
2020-07-06 03:11:16 +08:00
建议涉及运行环境的东西 虚拟机跑 Linux, 毕竟线上环境就是 Linux,
bluehtt
2020-07-06 07:35:17 +08:00
默认可以用 172.17.0.1 连接宿主机
594duck
2020-07-06 09:00:08 +08:00
@niubee1 老哥那些用 docker 跑数据库还一个月十几 G 的牛逼人物,你就放声他们牛逼就好了,讲道理他们是不会听的。这种粉红程序员缺少社会的毒打。

就像我最喜欢放生边缘项目用 docker 做生产环境。从朝气满满,怼天怼地到最后看着他们的 SLA 和预算崩盘,一脸苦逼的样子笑出了朱叫。
caicaiwoshishui
2020-07-06 09:08:18 +08:00
进入容器中,cat /etc/hosts 可以看到容器的 ip
,如 172.18.0.3,那么 macOS 的 mysql 地址应该是 172.18.0.1 。

楼主可以先 ping 下,ping 通就应该没有问题
Actrace
2020-07-06 09:14:13 +08:00
@594duck 之前有尝试想用 docker 降低部署成本,不过发现搭建的应用无法获得外部 IP 。最后还是没用上 docker 。
594duck
2020-07-06 09:30:30 +08:00
@Actrace Docker 这东西就是程序员们偷懒想出来的,包括 K8S 也是小公司弄不了 Spring boot 搞出来的。

根据我的观察 90%的公司搞 Docker 只解决一件事,CI/CD 。没了,其它没了。然后上 K8s 也只解决一件事,我们没弄 Spring boot,我们用 Docker 来解决。

上大规模 K8s 的公司也分二种,一种是头部企业先弄 30 人的团队,专门改造 K8s,然后他们说的 K8s 和你用的 K8s 是二件事。一种是反正我们不知道后年还活着不活着,面向简历,来我们上个 K8s

如果一公司,运维,测试,QA 全齐的,上不上 Docker 和 K8s 根本没差,因为决定成功的因素根本不在这方面。
killerv
2020-07-06 09:55:55 +08:00
#9 说的没错,可以这么用

另外 2# 上来就说不要上 Docker,我感觉是无脑。本机又不是生产环境,怎么方便怎么来,我就喜欢在本机用 docker 跑数据库,因为简单、不污染本地环境。

楼主,Mac 不建议直接跑 docker,磁盘 IO 差到爆炸,你安装个 Linux 虚拟机跑 Docker 都比本机强百倍。
Martin9
2020-07-06 10:06:56 +08:00
我之前 mac 上装了 docker,坑太多了,建议虚拟机里面装
1109599636
2020-07-06 10:18:33 +08:00
数据库程序本身可以 docker, 但是数据文件可以用 volume 挂载到 docker
wuqingdzx
2020-07-06 10:52:27 +08:00
docker.for.mac.localhost

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/687308

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX