我在服务器上的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

其他回答

这个对我很有用:

PGPASSWORD=postgres psql -h localhost -p 3307 -U postgres -d postgres

使用上面的方法加载一个初始脚本:

PGPASSWORD=postgres psql -h localhost -p 3307 -U postgres -d postgres < src/sql/local/blabla.sql

不要说我重新映射我的端口为:

docker run -p3307:5432 --name postgres -e POSTGRES_PASSWORD=postgres -d 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

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

这里有很好的答案,但是如果您想要postgres数据库管理的一些接口,您可以在本地计算机上安装pgAdmin,并使用其IP和postgres公开端口(默认为5432)连接到远程计算机。

Docker ps -a来获取容器id docker exec -它的psql -U -W

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