我正在使用以下命令运行一个postgres Docker容器:(参考:https://docs.docker.com/engine/examples/postgresql_service/)
docker build -t eg_postgresql .
docker run --rm -P --name pg_test eg_postgresql
这有效,但是端口号是动态的。我可以通过提供端口号连接到数据库。 (我在docker ps命令中看到的端口) 我想从Python连接到这个docker数据库,所以我需要一个静态端口号。
我尝试了以下参数:
-p 127.0.0.1:5432:5432
-p 5432:5432
在这种情况下,docker容器的端口号设置为5432。但是,我无法连接到数据库。我收到docker user does not exist
错误消息。
您有什么建议?
答案 0 :(得分:1)
我从您发布的链接中获取了Dockerfile。用
构建容器后 docker build -t eg_postgresql .
我从
开始启动容器 docker run --rm -p 5432:5432 --name pg_test eg_postgresql
(将本地主机端口5432绑定到容器端口5432)
然后我尝试与之建立联系
psql -h localhost -p 5432 -d docker -U docker --password
它就像一种魅力。如果收到消息docker用户不存在,请仔细检查Dockerfile中的所有步骤是否在docker build
命令期间成功执行,因为在命令RUN /etc/init.d/postgresql start &&\
psql --command "CREATE USER docker WITH SUPERUSER PASSWORD 'docker';" &&\
createdb -O docker docker
中完成了docker用户的创建。还请确保本地主机上没有运行PostgreSQL服务器,以便可以确保尝试在容器内连接到PostgreSQL。