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,现在大公司主流的做法究竟是什么呢?我是前端,这块学的很吃力,希望能有大佬解答一下。。。

阅读 302
评论
    1 个回答
    • 10.6k

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

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

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

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

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

    参考资料

      撰写回答

      登录后参与交流、获取后续更新提醒

      相似问题
      推荐文章