如果开发部署需要在多台服务器上时,多个不同compose容器间的连接就成为了问题。
比如我有一个docker-compose-base.yml 部署了mysql和nginx方便给其他应用重用,和另外两个docker-compose-A.yml,docker-compose-B.yml,默认三者都会创建各自的网络,要让他们联通需要一个默认的访问规则,因为我不希望新的应用依赖或者base反过来依赖,最好相互完全独立。
所以我的办法时在linux上可以给docker默认分配192.168.0.1网段后绑定一个默认ip就可以像使用overlay网络一样记住ip就可以互相联通了,这里不需要link容器。
上面解决了多台服务器部署的问题,但是开发的是docker for mac,mac的系统不是linux,素以它有些独特的限制,导致上面的办法不能在mac上使用。因为它无法绑定到私自的网段,私自的网段是不被mac允许的。
问题一:如何稳定的访问到主机?用过docker的知道localhost是没用的,dfm创建了一个新的本地dns类似hosts是“docker.for.mac.localhost”,并且应用到所有容器,这样就不存在mac ip一直更新的麻烦了。
问题二:从主机访问容器的服务?官方推荐是全部publish出来,反正是开发的内网,无所谓了。
另外一个我的办法,就是所有compose里的服务都用bridge模式,这时是可以跨compose link到所有服务的。