我的springboot项目和mysql都在docker内,位于不同的容器

如果你的java项目数据库连接地址写 localhost:3306 是连不通的,因为容器之间是不通信的
如何让docker容器之间进行通信,方式有很多种。我这里提供以下几种通信的解决方案
通过容器 IP 进行通信
查看mysql容器的详细信息
docker inspect mysql

找到 mysql 容器的 网关信息。修改 java 的数据库连接地址
jdbc:mysql://172.18.0.3:3306
还有一种方法通过公网ip来访问,但是这种方式肯定没有局域网通信来得快
jdbc:mysql://公网ip:3306
终极解决方案:
通过 docker --link 实现容器通信
启动java项目 --link=需要连接的容器名:自定义的容器别名
docker run -d --name wxapi --link=mysql:mysql -p 8066:8066 zach/wxapi
java项目的application.yml里配置数据库连接地址 自定义的容器别名:端口
jdbc:mysql://mysql:3306/……
启动成功后,查看 java 所在容器的 host 文件
docker exec hone cat /etc/hosts
[root@iz8vb6taz1tqqkbjaumncez jar]# docker exec hone cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.4 mysql a3fd82cec3a1 # 这里显示已经连接mysql容器
172.17.0.3 199eb58ec719