我在服务器上的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
其他回答
Docker ps -a来获取容器id docker exec -它的psql -U -W
连接到运行postgres的本地容器
安装 psql
酿造搜索postgres
编译安装postgresql
2.
docker run --name postgres -e POSTGRES_DB=users \
-e POSTGRES_USER=john \
-e POSTGRES_PASSWORD=password \
-p 5432:5432 -d postgres
psql --host=localhost --username=john --dbname=users
我设法让它在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
如果它是一个django后端应用程序,你可以这样做。
docker exec -it container_id python manage.py dbshell
我在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访问。
推荐文章
- 查询JSON类型内的数组元素
- 获得PostgreSQL数据库中当前连接数的正确查询
- 纬度和经度的数据类型是什么?
- 如何在PostgreSQL中临时禁用触发器?
- 输入文件似乎是一个文本格式转储。请使用psql
- 试图连接到https://index.docker.io时,网络超时
- 使用LIMIT/OFFSET运行查询,还可以获得总行数
- 当恢复sql时,psql无效命令\N
- 货币应该使用哪种数据类型?
- 如何添加列,如果不存在PostgreSQL?
- 如何在Postgres中获得两个字段的MIN() ?
- 为每个Docker图像查找图层和图层大小
- 如何避免在为Python项目构建Docker映像时重新安装包?
- 截断Postgres数据库中的所有表
- 如何用docker-compose更新现有图像?