docker 端口5432失败:服务器意外关闭了连接

jutyujz0  于 2023-10-16  发布在  Docker
关注(0)|答案(1)|浏览(178)

下面的版本

  • 乌班图22.04
  • 轨道5.2.6
  • ruby 2.6.10
  • postgresql 14

在docker容器中运行postgresql,并在运行任何命令时,如rake db:migrate或尝试连接psql -h 127.0.0.1-U user或rake db:create,会出现以下错误

PG::ConnectionBad: connection to server at "127.0.0.1", port 5432 failed: server closed the connection unexpectedly
    This probably means the server terminated abnormally
    before or while processing the request.

当我尝试在本地运行postgresql时,得到下面的错误

psql: error: connection to server at "localhost" (127.0.0.1), port 5432 failed: could not initiate GSSAPI security context: Unspecified GSS failure.  Minor code may provide more information: Server not found in Kerberos database
connection to server at "localhost" (127.0.0.1), port 5432 failed: FATAL:  database "DATABSE" does not exist
oxiaedzo

oxiaedzo1#

rake db:migrate不会直接在docker容器中运行
有两种方法来运行它

1)第一个

首先,在docker-entrypoint.sh文件中添加以下行

echo $SHARED_DIR
bundle exec rake db:setup  DISABLE_DATABASE_ENVIRONMENT_CHECK=1
bundle exec rake db:migrate  DISABLE_DATABASE_ENVIRONMENT_CHECK=1

echo $SHARED_DIR
bundle exec rake db:setup 
bundle exec rake db:migrate

记住,rake db:setup命令只需要运行一次,当你第一次创建Docker镜像时,之后每当你创建一个新镜像时,注解rake db:setup命令。否则,数据库将被重置,您将丢失数据。

2)另一种方式。

您可以在本地转到项目并运行此命令
为此,您必须运行sudo docker ps -a命令以查看所有docker镜像
然后运行到位置sudo docker exec -ti container_id bash命令
然后

bundle rake db:setup 
bundle rake db:migrate

相关问题