2017-06-28 39 views
0

如何配置部署爲泊塢窗容器的應用程序以引用在其他容器中運行的組件?我有一個需要postgresql的節點應用程序。我有一個節點配置文件,其中包含postgres的所有連接信息。在非docker部署中,您只需設置所需的配置值(例如數據庫服務器的IP地址等),但如何在docker部署中完成此操作?在Docker容器中配置應用程序以訪問其他容器

我使用的是Docker Compose,但看不到我如何找到postgres docker容器的必需IP地址,然後在我的node.js配置中設置該值。

回答

0

你不需要獲取IP地址。

通過使用「服務」名稱而不是ip,您可以在同一環境(同一個Docker撰寫)中從另一個容器獲取容器。

0

創建碼頭網絡。當您不使用默認網絡時,您將獲得一個DNS服務器,您可以使用該服務器來解析其他容器的--name名稱。

0

使用域名

要連接到您的應用程序,你不需要IP,你只需要容器名稱。

我會嘗試在下面的例子中解釋它。

如果您有例如泊塢窗,撰寫文件象下面這樣:

version: '2' 
services: 
    web: 
    build: docker/web 
    ports: 
     - "8080:8080" 
    links: 
     - dbpostgres 
    volumes: 
     - .:/var/www/html # I will share my code so I map this path 
    dbpostgres: <-- CONTAINER NAME 
    image: postgres 
    volumes: 
     - /private/var/lib/postgresql:/var/lib/postgresql 
    ports: 
     - "5432:5432" 
    environment: 
     POSTGRES_USER: pguser 
     POSTGRES_PASSWORD: pguser 
     POSTGRES_DB: pgdb 

,你想連接到Postgres數據庫,所有你需要做的是使用的容器名稱,而不是IP地址。

parameters: 
    database_host: dbpostgres <-- CONTAINER NAME 
    database_port: null 
    database_name: dbname 
    database_user: dbuser 
    database_password: pass 

使用IP

如果你不希望使用的域名,並且希望使用IP(I:這裏dbpostgres

在您的配置文件,你應該在這種情況下使用不知道的原因),你可以使用命令:

docker inspect project_dbpostgres_1 

其中project_dbpostgres_1是你的容器名稱。您可以使用docker ps檢查容器名稱。

部分中的碼頭檢查NetworkSettings包含關鍵網絡。你應該尋找IPAddress。還有別名,您可以在其中找到別名dbpostgres。

... "NetworkSettings": { 
     "Bridge": "", 
     "SandboxID": "7005a7782180462e31e526aa9a5ad89e1943230d57c33930c9f7de26f3917157", 
     "HairpinMode": false, 
     "LinkLocalIPv6Address": "", 
     "LinkLocalIPv6PrefixLen": 0, 
     "Ports": { 
      "9000/tcp": null 
     }, 
     "SandboxKey": "/var/run/docker/netns/7005a7782180", 
     "SecondaryIPAddresses": null, 
     "SecondaryIPv6Addresses": null, 
     "EndpointID": "", 
     "Gateway": "", 
     "GlobalIPv6Address": "", 
     "GlobalIPv6PrefixLen": 0, 
     "IPAddress": "", 
     "IPPrefixLen": 0, 
     "IPv6Gateway": "", 
     "MacAddress": "", 
     "Networks": { 
      "i2mv3_default": { 
       "IPAMConfig": null, 
       "Links": null, 
       "Aliases": [ 
        "31b7550ecd14", 
        "dbpostgres" 
       ], 
       "NetworkID": "e1a954361a2a325cac15405135d67e716dff4c15ea10d402948bf7dff329c1fa", 
       "EndpointID": "9b2ad968df4e55750fe1d1730e33fafa5512012b1669df97d838abf0f25fa506", 
       "Gateway": "172.18.0.1", 
       "IPAddress": "172.18.0.2", <---- YOUR IP 
       "IPPrefixLen": 16, 
       "IPv6Gateway": "", 
       "GlobalIPv6Address": "", 
       "GlobalIPv6PrefixLen": 0, 
       "MacAddress": "02:42:ac:12:00:02" 
      } 
     } 
    } ... 
相關問題