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


当前回答

我已经在主机上运行postgres,不想允许网络连接,所以我在容器中运行临时postgres实例,并在两行中创建数据库:

# Run PostgreSQL
docker run --name postgres-container -e POSTGRES_PASSWORD=password -it -p 5433:5432 postgres

# Create database
docker exec -it postgres-container createdb -U postgres my-db

其他回答

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

$ docker exec -it postgres-container bash

# su postgres

$ psql

Or

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

如果它是一个django后端应用程序,你可以这样做。

docker exec -it container_id python manage.py dbshell

这个对我很有用:

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

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

由于某种原因,5432端口似乎受到保护。我把我的端口配置从5432:5432更改为5416:5432,下面的命令可以从docker容器外部连接到postgres数据库:

psql -h localhost -p 5416 -U <my-user> -d <my-database>