Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
239 views
in Technique[技术] by (71.8m points)

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

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

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

当你在容器内使用 localhost 是,实际是指向的容器内的 localhost ,所以你并不能访问到主机的服务。

在容器内访问主机应该使用 host.docker.internal 或者 gateway.docker.internal 来代替原本的 localhost 。

遗憾的是,在 linux 中没法使用这个办法,你得使用 docker0 网卡的方式,这个IP分配给容器后也不会变化。

2、是否使用容器来运行 MySQL 并无太大差异,因为你的数据始终应该落地到主机,但是根据推荐使用全套,因为这样可以消除不同环境的环境差异。

你可以用 docker inspect <容器名字或ID> 来查看容器的网关地址,这通常是 172.17.0.1

参考资料


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...