我在服务器上的docker容器中有Postgresql。我如何从外部,即从我的本地计算机连接到它?我应该应用什么设置才能允许这样做?
发布于 2016-06-08 21:53:34
你可以这样运行Postgres (映射一个端口):
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d -p 5432:5432 postgres现在,您已经将容器的端口5432映射到服务器的端口5432。-p <host_port>:<container_port> .So现在可从public-server-ip:5432访问postgres
测试:运行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转到您的localhost (这里有一些工具或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中详细解释了这一点。
发布于 2018-08-05 00:15:39
我设法让它在linux上运行。
postgres:alpine运行--rm -P -p 127.0.0.1:5432:5432 -e POSTGRES_PASSWORD="1234“--名称pg docker
psql postgresql://postgres:1234@localhost:5432/postgres
对于mac用户,请将psql替换为pgcli
发布于 2018-01-30 22:05:17
您也可以通过docker exec命令访问,方法是:
$ docker exec -it postgres-container bash
# su postgres
$ psql或
$ docker exec -it postgres-container psql -U postgreshttps://stackoverflow.com/questions/37694987
复制相似问题