在交付类的软件项目中,经常会遇到一台主机部署的一套系统里面包含了多个标准化的docker服务,里面会有中间件:ES、MySQL、Redis诸如此类的,他们在应用中可能是加入同一个docker网段实现互通的,以至于在应用配置中可以直接映射,比如这个springboot的application中的配置
jdbc:mysql://mysql:3306
这里说明应用可以直接访问mysql:3306
作为连接地址,而非往常的ip或者是域名
这会造成一个问题,使用docker部署的mysql是无法被局域网的主机或者外网的主机访问的,只有他自己的docker同网段兄弟容器可以访问,而宿主机的访问方式只能是容器的一个分配IP
但是纯Linux管理数据库是真的麻烦,所以我想到了使用可视化工具来做这个东西,web应用,比如宝塔流传的phpmyadmin,但是用宝塔安装的版本会有个问题,他会自动绑定宝塔中映射的那个数据库,导致无法访问其他数据库
解决方案: 使用docker单独部署phpmyadmin,与宝塔的互不干扰
docker run --name phpmyadmin -d -e PMA_ARBITRARY=1 -p 13303:80 phpmyadmin:latest
完成后访问地址13303
这个时候会提示登录和连接服务器,这里就要填写mysql容器的那个映射IP了,而不是宿主机IP
最后,连接成功,正常使用