在同一docker网络本地主机上运行多个容器
我想从我的应用程序连接到本地主机上的mongodb,因此它们需要具有相同的本地主机地址 所以问题是:两个容器是否可以共享它们的本地主机,或者对于每个容器,本地主机ip必须不同? 我这样做是为了测试环境的目的,所以我不想要内存中的数据库、更改的mongo uri或任何不同的解决方案。我只想通过本地主机从A连接到B 要运行我的网络和容器,请键入:在同一docker网络本地主机上运行多个容器,docker,Docker,我想从我的应用程序连接到本地主机上的mongodb,因此它们需要具有相同的本地主机地址 所以问题是:两个容器是否可以共享它们的本地主机,或者对于每个容器,本地主机ip必须不同? 我这样做是为了测试环境的目的,所以我不想要内存中的数据库、更改的mongo uri或任何不同的解决方案。我只想通过本地主机从A连接到B 要运行我的网络和容器,请键入: docker network create --driver bridge isolated_nw docker run --name mongodb -
docker network create --driver bridge isolated_nw
docker run --name mongodb -d -p 27017:27017 --network=isolated_nw mongo:3.4.2
docker run --name roomate-profiles --network=isolated_nw -d -p 8080:8080 sovas/roomate-profiles
我的自定义docker网络:
[
{
"Name": "isolated_nw",
"Id": "3efd6831784c2a8c9e9ea345144fcc6b9180e70c0e1b4b5d1a72219051b24e67",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1/16"
}
]
},
"Internal": false,
"Containers": {
"57d4e2fb1f0c8d776329fd6ce82e5905df00e261ab6923595578dcb35913b03e": {
"Name": "roomate-profiles",
"EndpointID": "5a8158dc1aba6958218d1cca3c98ca911ab2cfa73be839ceece2e7819b244c91",
"MacAddress": "02:42:ac:12:00:03",
"IPv4Address": "172.18.0.3/16",
"IPv6Address": ""
},
"8fa815735d7ebb77434f8abf11e58f18faeb5d67e2743903d81f4600bd558c35": {
"Name": "mongodb",
"EndpointID": "7b7a7ed1ad08bbe381fb6d66c6e9fea66ee9b7c581f530bdf4d82f0741bff04b",
"MacAddress": "02:42:ac:12:00:02",
"IPv4Address": "172.18.0.2/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]
应用程序属性
spring.data.mongodb.uri=mongodb://localhost:27017/admin
localhost
不起作用,因为它引用了roomate配置文件容器。但你能做到
spring.data.mongodb.uri=mongodb://mongodb:27017/admin
因为两个容器都连接到同一个网络。也不需要将mongodb端口映射到主机(除非您需要它用于其他用途)