我在服务器上的docker容器中有Postgresql。我如何从外部,也就是从我的本地计算机连接到它?我应该应用什么设置来允许这样做?


当前回答

连接到运行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

其他回答

首先打开postgres的docker映像

docker exec -it <container_name>

然后你会得到根目录--root@868594e88b53:/# 它需要数据库连接

psql postgresql://<username>:<databasepassword>@postgres:5432/<database>

我设法让它在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

连接到运行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

你也可以通过docker exec命令访问:

$ docker exec -it postgres-container bash

# su postgres

$ psql

Or

$ docker exec -it postgres-container psql -U postgres

我尝试从localhost (mac)连接到postgres容器。我将docker-compose文件中的端口从5432更改为3306,并启动了容器。不知道我为什么这么做:|

然后我尝试通过PSequel和adminer连接到postgres,但连接无法建立。

切换回端口5432后,一切工作正常。

  db:
    image: postgres
    ports:
      - 5432:5432
    restart: always
    volumes:
      - "db_sql:/var/lib/mysql"
    environment:
      POSTGRES_USER: root
      POSTGRES_PASSWORD: password
      POSTGRES_DB: postgres_db

这就是我想要分享的经验。也许有人可以利用它。