在docker容器中configuration应用程序以访问其他容器
如何configuration部署为泊坞窗容器的应用程序来引用在其他容器中运行的组件? 我有一个需要postgresql的节点应用程序。 我有一个节点configuration文件,其中包含postgres的所有连接信息。 在非docker部署中,只需设置所需的configuration值(例如db服务器的IP地址等),但是如何在docker部署中完成此操作?
我使用的是Docker Compose,但是看不到如何findpostgres docker容器的必要IP地址,然后在我的node.jsconfiguration中设置该值。
你不需要得到IP。
您可以通过使用“服务”名称而不是ip来从同一环境中的另一个容器(相同的Docker撰写)伸出容器。
创build一个dockernetworking。 当您不使用默认networking时,您将获得一个DNS服务器,您可以使用该服务器来parsing其他容器的 – 名称。
使用域名
要连接到您的应用程序,您不需要IP,只需要容器名称。
我将尝试在下面的例子中解释它。
如果你有像下面这样的docker-compose文件:
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地址。 这里是dbpostgres
在你的configuration文件中你应该使用在这种情况下:
parameters: database_host: dbpostgres <-- CONTAINER NAME database_port: null database_name: dbname database_user: dbuser database_password: pass
使用IP
如果您不想使用域名,并且想使用IP(我不知道原因),您可以使用命令:
docker inspect project_dbpostgres_1
其中project_dbpostgres_1是您的容器名称。 您可以使用docker ps
检查容器名称。
docker检查部分NetworkSettings有关键的networking。 你应该寻找IPAddress。 还有别名,你可以find别名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" } } } ...
- Dockerfile将新创build的文件添加或复制到泊坞窗图像 – 没有这样的文件或目录
- 服务运行,可以通过docker-compose ping但容器A看不到容器B?
- 使用Docker Compose将JSON文件读入环境variables
- 克隆和轻松运行laravel应用程序
- 独立的开发和生产实例和数据库
- 错误在docker上的laravel应用程序上运行composer时找不到驱动程序
- Docker插件:java.io.FileNotFoundException:/ src / main / docker / Dockerfile gradle-docker失败
- Docker Compose + Spring Boot + Postgres连接
- 我怎样才能让我的nodeJS容器连接到我的mongoDB容器?