我在服务器上的docker容器中有Postgresql。我如何从外部,也就是从我的本地计算机连接到它?我应该应用什么设置来允许这样做?
当前回答
要从本地主机连接,你需要添加'——net host':
docker run --name some-postgres --net host -e POSTGRES_PASSWORD=mysecretpassword -d -p 5432:5432 postgres
你可以直接访问服务器而不使用exec从你的localhost,通过使用:
psql -h localhost -p 5432 -U postgres
其他回答
我设法让它在linux上运行
运行docker postgres -确保端口被发布,我使用alpine是因为它是轻量级的。 docker run——rm -P 127.0.0.1:5432:5432 -e POSTGRES_PASSWORD="1234"——name pg postgres:alpine 使用另一个终端,使用postgres uri从主机访问数据库 psql postgresql: / / postgres: 1234 @localhost: 5432 / postgres
MAC用户请将PSQL替换为pgcli
要从本地主机连接,你需要添加'——net host':
docker run --name some-postgres --net host -e POSTGRES_PASSWORD=mysecretpassword -d -p 5432:5432 postgres
你可以直接访问服务器而不使用exec从你的localhost,通过使用:
psql -h localhost -p 5432 -U postgres
如果它是一个django后端应用程序,你可以这样做。
docker exec -it container_id python manage.py dbshell
在构建我的网关微服务应用程序后,我也遇到了同样的问题。无法从Heidisql连接到竞争化postgresql。
在这一刻,我已经解决了它简单地指定postgresql密码docker-compose。Yml和端口。
所以你应该找到并打开docker-compose.yml。然后您应该输入POSTGRES_PASSWORD(不要让它为空),并指定端口“5432:5432”
服务: microservice33-postgresql: 环境: - POSTGRES_USER = microservice33 - POSTGRES_PASSWORD =之后 - POSTGRES_HOST_AUTH_METHOD =信任 港口: ——5432:5432
参考链接和截图张贴
我在Docker容器中使用django和postgres。在docker-compose文件中,添加以下内容:
db:
image: postgres:10-alpine
environment:
- POSTGRES_DB=app
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=supersecretpassword
ports:
- "6543:5432"
这个端口设置使用了本地机器可以访问的端口6543(它只需要不同于5432)。就我自己而言,我将DBeaver连接到它。这将防止您的应用程序请求和本地机器请求之间的端口冲突。
起初,我收到一条消息,说端口5432正在使用(由django应用程序),所以我无法通过pgAdmin或DBeaver访问。
推荐文章
- PostgreSQL删除所有内容
- 为什么PostgreSQL要对索引列进行顺序扫描?
- PostgreSQL INSERT ON冲突更新(upsert)使用所有排除的值
- 如何检查一个表是否存在于给定的模式中
- 如何从DockerFile运行docker实例?
- 我是否试图连接到启用TLS的没有TLS的守护进程?
- Docker -一种访问主机USB或串行设备的方法?
- 如何将整数转换为字符串作为PostgreSQL查询的一部分?
- Psycopg2:用一个查询插入多行
- Docker:无效引用格式
- 将AWS凭证传递给Docker容器的最佳方法是什么?
- 如何在docker-compose中设置主机名?
- 为什么Docker容器映像这么大?
- PostgreSQL返回JSON数组的结果集?
- PostgreSQL通配符LIKE用于单词列表中的任何一个