2017-06-28 143 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" 
      } 
     } 
    } ... 
相关问题