我在 docker 容器中的服务器上有 Postgresql。如何从外部(即本地计算机)连接到它?我应该应用什么设置来允许这样做?
最佳答案
你可以这样运行 Postgres(映射一个端口):
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d -p 5432:5432 postgres
现在您已经将容器的 5432 端口映射到服务器的 5432 端口。 -p <host_port>:<container_port>
.所以现在你的postgres可以从你的public-server-ip:5432
访问
测试: 运行 postgres 数据库(上面的命令)
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
05b3a3471f6f postgres "/docker-entrypoint.s" 1 seconds ago Up 1 seconds 0.0.0.0:5432->5432/tcp some-postgres
进入你的容器并创建一个数据库:
docker exec -it 05b3a3471f6f bash
root@05b3a3471f6f:/# psql -U postgres
postgres-# CREATE DATABASE mytest;
postgres-# \q
转到您的本地主机(那里有一些工具或 psql 客户端)。
psql -h public-ip-server -p 5432 -U postgres
(密码mysecretpassword)
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+------------+------------+-----------------------
mytest | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres
因此,您正在从本地主机访问数据库(在服务器上的 docker 中运行)。
在 this post很详细。
关于postgresql - 从外部连接到 docker 容器中的 Postgresql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37694987/