2017-05-07 181 views
1

我想從我的應用程序連接到本地主機上的mongodb,因此它們需要具有相同的localhost地址。在同一個docker網絡上運行多個容器localhost

所以問題是:兩個容器可以共享它們的localhost,或者每個容器的localhost ip必須不同?

我這樣做是爲了測試環境的目的,所以我不想在內存中的數據庫,更改mongo uri或任何不同的解決方案。我只想通過localhost從A連接到B.

運行我的網絡和容器I型:

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 

我定製泊塢窗網:

[ 
    { 
     "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": {} 
    } 
] 

application.properties

spring.data.mongodb.uri=mongodb://localhost:27017/admin 

回答

1

localhost是行不通的,因爲它是指到roomate配置文件容器。但你可以做

spring.data.mongodb.uri=mongodb://mongodb:27017/admin 

因爲兩個容器都連接到同一個網絡。也不需要將mongodb端口映射到主機(除非你需要它來做其他事情)。

相關問題