使用DOCKER NETWORK连接容器
原本想使用--link来连接springboot容器和mysql容器,但是配置以后一直不成功,查了一下link已经被弃用(不知道是不是不成功的原因),推荐使用network。
1。新建一个net work
docker network create dockernet
#dockernet是你的命名
2。改造springboot项目,增加一个对数据库(mysql+mybatis)的检索操作。(具体的不展开了,只记录说明主题相关的部分)
➤HelloController.java
添加以下方法,如果检索成功,会返回一个品牌名字。
@RequestMapping(value="/brand")
public String brand() {
Long id = 1L;
PmsBrand brand = pmsBrandService.getBrand(id);
return brand.getName();
}
先在本地测试,确认以上方法可以正确检索出内容。
➤application.properties
为了实现docker上的,容器间的通信,要把项目配置文件里,数据库的URL配置做一点小修改.
修改前:localhost
修改后:mysql(这是我之后要加入到docker network的mysql容器的名字,可以理解成域名,即使容器重启IP,只要这个名字不变仍然可以连接)
修改前:
spring.datasource.url=jdbc:mysql://localhost:3306/mall_tiny?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
修改后:
spring.datasource.url=jdbc:mysql://mysql:3306/mall_tiny?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
3。重新打包docker-test,启动的同时加入到dockernet里。
(打包等步骤参考:https://www.jianshu.com/p/e37b9aaade83)
在命令里加上 参数:--network docker网络名 --network-alias 容器域名
docker run -d --name docker-test --network dockernet --network-alias docker-test -p 9999:9110 -t springboot/docker-test
4。重新发布mysql容器,并加入到dockernet里。
docker run -d --name mysql --network dockernet --network-alias mysql -p 3306:3306 -t mysql5.7
5。查看dockernet网络信息
命令:docker network inspect docker网络名
可以看到docker-test和mysql两个容器已经加入dockernet网络
C:\WINDOWS\system32>docker network inspect dockernet
[
{
"Name": "dockernet",
"Id": "8de96a4aac582d175a9a996b188678712157bd80b91582f24fa8f8321f9e41f2",
"Created": "2021-11-15T16:15:48.3827776+08:00",
"Scope": "local",
"Driver": "nat",
"EnableIPv6": false,
"IPAM": {
"Driver": "windows",
"Options": {},
"Config": [
{
"Subnet": "172.28.48.0/20",
"Gateway": "172.28.48.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"2cbc32edc214dcccbe0f23717ff5345f7f4aea19246646c47b7dcfc43a9e4e7b": {
"Name": "docker-test",
"EndpointID": "1d6e713937f4b8c865162375bc58c505431156b6e8b8e8453e300729c1acf30c",
"MacAddress": "00:15:5d:13:c0:b2",
"IPv4Address": "172.28.48.68/16",
"IPv6Address": ""
},
"44311d441a1d8f72e14d8f123937b6c341563219897143adbc1c933b48cd5a1f": {
"Name": "mysql",
"EndpointID": "b8a43c428b22124bff6d28cea67a341dda783ccca0d727b59da4254bbe657bad",
"MacAddress": "00:15:5d:13:ce:65",
"IPv4Address": "172.28.61.68/16",
"IPv6Address": ""
}
},
"Options": {
"com.docker.network.windowsshim.hnsid": "325F4C4B-EB9A-43DF-879C-D7E7888DD462"
},
"Labels": {}
}
]
C:\WINDOWS\system32>
6。见证奇迹的时刻到了,使用docker端口访问docker-test,成功。
图片.png
网友评论