[英]PostgreSQL and pgAdmin both running in Docker containers and connecting
我試圖在Docker容器中運行PostgreSQL和pgAdmin。 我的想法是PostgreSQL數據庫應該可以被我在主機上運行的任何應用程序訪問,也可以訪問pgAdmin。
我正在使用此命令來運行PostgreSQL:
docker run -d -e POSTGRES_USER=username -e POSTGRES_PASSWORD=password --name postgres -p 5432:5432 postgres
並運行pgAdmin :
docker run -d -p 1111:1111 --name pgadmin -e "PGADMIN_LISTEN_PORT=1111" -e "PGADMIN_DEFAULT_EMAIL=admin@test.com" -e "PGADMIN_DEFAULT_PASSWORD=test" dpage/pgadmin4
如果我去localhost:1111
,我可以連接到pgAdmin並登錄。 但是,當我嘗試連接到我的本地PostgreSQL實例時,它沒有響應。
因此,我嘗試使用--net=host
而不是-p 1111:1111
運行pgAdmin來訪問主機Internet:
docker run -d --net=host --name pgadmin -e "PGADMIN_LISTEN_PORT=1111" -e "PGADMIN_DEFAULT_EMAIL=admin@test.com" -e "PGADMIN_DEFAULT_PASSWORD=test" dpage/pgadmin4
現在,當我嘗試訪問localhost:1111
以連接到pgAdmin時,我的瀏覽器中沒有響應。
Docker Compose是一個可能的解決方案,因為我可以將兩個容器鏈接在一起,這樣他們就可以互相訪問而不必擔心端口,但我還需要pgAdmin才能訪問其他機器上的PostgreSQL實例,以及我的本地實例。
我覺得--net=host
在Docker中被破壞了。 有一個整體的線程在這里有很多的困惑。
我的設置:
Host: Windows 10
Docker: Docker Desktop Community v2.0.0.3 (31259)
我現在嘗試在pgAdmin容器上使用--link postgres
,它允許我連接到我的本地PostgreSQL實例,但不是非本地實例,完整命令是:
docker run -d -p 1111:1111 --link postgres --name pgadmin -e "PGADMIN_LISTEN_PORT=1111" -e "PGADMIN_DEFAULT_EMAIL=admin@test.com" -e "PGADMIN_DEFAULT_PASSWORD=test" dpage/pgadmin4
創建docker容器時,它會創建一個橋接網絡。 首先找到網橋的網絡范圍。 您可以使用ifconfig
查找它。 假設172.17.0.5是pgAdmin的ip,然后為PostgreSQL創建一個用戶'root'@'172.17.0.5'並為該用戶授予數據庫權限。 然后,您可以連接到數據庫。 還要檢查端口3306是否可以使用telnet訪問。
命令沒有錯,只有pgAdmin中的連接,所以完整的命令列表是:
對於PostgreSQL:
docker run -d -e POSTGRES_USER=username -e POSTGRES_PASSWORD=password --name postgres -p 5432:5432 postgres
和pgAdmin:
docker run -d -p 1111:1111 --name pgadmin -e "PGADMIN_LISTEN_PORT=1111" -e "PGADMIN_DEFAULT_EMAIL=admin@test.com" -e "PGADMIN_DEFAULT_PASSWORD=test" dpage/pgadmin4
現在pgAdmin
容器將不會連接到localhost
但需要PostgreSQL容器的IP。 跑:
docker inspect postgres
檢查結果:
[
{
...
"NetworkSettings": {
...
"Networks": {
...
"IPAddress": "172.17.0.3",
...
}
}
}
]
我們只對inspect
命令中的IPAddress
感興趣。 這是pgAdmin應該連接的IP。
pgAdmin還能夠從您的計算機訪問外部IP。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.