我正在努力從另一個容器連接到帶有 postgres 資料庫的正在運行的容器。我可以在本地運行時連接,但我懷疑在嘗試從另一個容器連接時我忽略了一些網路問題。我目前看到的具體錯誤是psycopg2.OperationalError: could not translate host name "my_network" to address: Temporary failure in name resolution
這是我的 docker-compose:
version: '3'
services:
data_collection:
build: ./docker/data_collection
ports:
- "8888:8888"
- "6006:6006"
- "8000:8000"
networks:
- my_network
depends_on:
- db
db:
image: 'postgres:13.2-alpine'
ports:
- "5432:5432"
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=mypassword
- POSTGRES_DB=spotify
volumes:
- db-data:/var/lib/postgresql/data # persist data even if container shuts down
networks:
- my_network
volumes:
db-data: # names volumes can be managed easier using docker-compose
networks:
my_network:
~
然后我在我的data_colleciton容器中輸入一個 shell并嘗試通過將這些引數讀取到一個 variables 中來連接params,它像這樣傳入:
import psycopg2
params = dict(host='my_network', database='spotify', user='postgres', password='mypassword', port='5432')
conn = psycopg2.connect(**params)
但是,在本地運行它并用 localhost 替換上面的主機確實按預期作業
uj5u.com熱心網友回復:
將 更改host='my_network'為host='db'。您沒有連接到網路,而是連接到該網路中的特定主機。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/361826.html
標籤:PostgreSQL的 码头工人 docker-compose psycopg2
上一篇:SEOURL和重寫規則強制一個域
