Mac下docker访问主机服务
这里说一下我使用Mac时在使用docker环境中遇到的问题,就是Mac的docker在网络堆栈中的限制,导致的无法直接通过172.17.0.1即docker0的网卡ip来访问本机的服务
那么我们有没什么解决的方法呢?
这里根据我们实际的使用情景有以下主要的解决方案
我们想要从我们的镜像来访问我们的Mac主机的服务
由于mac中docker的网络时在Docker Desktop for mac,中实现的,我们无法在我们的主机上看到docker0这个网口,但其实这个接口实际上在虚拟机中。我们想实现这个镜像来访问我们的Mac主机的服务,我们需要查看docker的文档,我们从文档中可以得知,在18.03开始以后的所有版本中,docker官方推荐我们通过host.docker.internal
这个DNS来对于我们的服务进行访问,同样的gateway.docker.internal
也可以,我们在使用的时候只需要设置我们的host为这个就可以正常使用了
如下, 这个在我们最后上线ubuntu服务器时,只需要我们在docker-compse中设置对应环境变量,就可以覆盖后者了
module.exports = { port: 4000, db: { user: process.env.USER || 'YourDBUser', password: process.env.PASSWORD || 'YourDBPassword', database: process.env.DATABASE || 'YourDBName', options: { dialect: process.env.DIALECT || 'host.docker.internal', host: process.env.HOST || 'mysql', port: 3306, define: { charset: 'utf8mb4', collate: 'utf8mb4_unicode_ci', supportBigNumbers: true, bigNumberStrings: true } } }, authServiceToken: { secretKey: process.env.SECRET || 'secret' } }