从另一个 运行 容器连接到 postgres 容器
Connect to postgres container from another running container
我正在努力从另一个容器连接到带有 postgres 数据库的 运行 容器。我可以在 运行 本地连接,但我怀疑在尝试从另一个容器连接时我忽略了一些网络问题。我目前看到的具体错误是 psycopg2.OperationalError: could not translate host name "my_network" to address: Temporary failure in name resolution
这是我的 docker-撰写:
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 并尝试通过将这些参数读入变量 params
来进行连接,它像这样传入:
import psycopg2
params = dict(host='my_network', database='spotify', user='postgres', password='mypassword', port='5432')
conn = psycopg2.connect(**params)
但是,运行 这在本地并将上面的主机替换为 localhost 确实可以按预期工作
将 host='my_network'
更改为 host='db'
。您没有连接到网络,您正在连接到该网络中的特定主机。
我正在努力从另一个容器连接到带有 postgres 数据库的 运行 容器。我可以在 运行 本地连接,但我怀疑在尝试从另一个容器连接时我忽略了一些网络问题。我目前看到的具体错误是 psycopg2.OperationalError: could not translate host name "my_network" to address: Temporary failure in name resolution
这是我的 docker-撰写:
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 并尝试通过将这些参数读入变量 params
来进行连接,它像这样传入:
import psycopg2
params = dict(host='my_network', database='spotify', user='postgres', password='mypassword', port='5432')
conn = psycopg2.connect(**params)
但是,运行 这在本地并将上面的主机替换为 localhost 确实可以按预期工作
将 host='my_network'
更改为 host='db'
。您没有连接到网络,您正在连接到该网络中的特定主机。