如何配置部署爲泊塢窗容器的應用程序以引用在其他容器中運行的組件?我有一個需要postgresql的節點應用程序。我有一個節點配置文件,其中包含postgres的所有連接信息。在非docker部署中,您只需設置所需的配置值(例如數據庫服務器的IP地址等),但如何在docker部署中完成此操作?在Docker容器中配置應用程序以訪問其他容器
我使用的是Docker Compose,但看不到我如何找到postgres docker容器的必需IP地址,然後在我的node.js配置中設置該值。
如何配置部署爲泊塢窗容器的應用程序以引用在其他容器中運行的組件?我有一個需要postgresql的節點應用程序。我有一個節點配置文件,其中包含postgres的所有連接信息。在非docker部署中,您只需設置所需的配置值(例如數據庫服務器的IP地址等),但如何在docker部署中完成此操作?在Docker容器中配置應用程序以訪問其他容器
我使用的是Docker Compose,但看不到我如何找到postgres docker容器的必需IP地址,然後在我的node.js配置中設置該值。
你不需要獲取IP地址。
通過使用「服務」名稱而不是ip,您可以在同一環境(同一個Docker撰寫)中從另一個容器獲取容器。
創建碼頭網絡。當您不使用默認網絡時,您將獲得一個DNS服務器,您可以使用該服務器來解析其他容器的--name名稱。
使用域名
要連接到您的應用程序,你不需要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"
}
}
} ...