【发布时间】:2019-10-02 06:08:41
【问题描述】:
我使用 compose 文件创建了一个 docker postgres 容器:
postgres:
image: postgres:12-alpine
volumes:
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
ports:
- "5432:5432"
init.sql:
CREATE USER test WITH PASSWORD '123456';
ALTER USER test WITH SUPERUSER;
CREATE DATABASE test;
我还通过运行创建了一个 pgAdmin4 容器:
docker pull dpage/pgadmin4
docker run -p 5050:80 \
-e "PGADMIN_DEFAULT_EMAIL=user@domain.com" \
-e "PGADMIN_DEFAULT_PASSWORD=SuperSecret" \
-d dpage/pgadmin4
在 pgAdmin 中设置连接时。我需要通过查看 postgres 容器 IPAddress:docker container inspect 02e83f5f39d6 | grep IPAddress 来设置到 172.17.0.2 的服务器连接,使用 localhost 作为连接字符串将在 pgAdmin4 中失败。
但是,当我使用 python sqlalchemy 时,我可以连接到 localhost:5432。
import pandas as pd
from sqlalchemy import create_engine, MetaData
eng = create_engine('postgresql://test:123456@localhost:5432/test', echo=True)
meta = MetaData()
meta.reflect(eng, schema='public')
这令人困惑。为什么 pgAdmin 无法识别端口映射?是因为它是从另一个容器运行的吗?那么正确的设置应该是什么?
【问题讨论】:
标签: postgresql docker docker-compose