在Discourse未运行时访问数据库

危险!!

这可能会破坏您的安装,但它可能会让您摆脱困境。
请谨慎使用这些说明。

如果由于任何原因无法使用 ./launcher rebuild app 运行 discourse 容器,并且需要访问数据库来解决问题,请尝试这些说明。

该技术使用 Postgres 的 Docker 映像来访问已安装 Discourse 的卷。请勿在 Discourse 运行时运行此命令!

这假定 discourse 安装在 /var/discourse 中,并且您知道如何通过命令行操作 Postgres。

将“mysecretpassword”更改为更安全的值。

# 拉取您的 Discourse 版本的正确映像。
docker pull postgres:15
        
# 启动容器并将其指向本地数据库文件。
docker run --name postgres_container -e POSTGRES_PASSWORD=mysecretpassword -d -p 5432:5432 -v /var/discourse/shared/standalone/postgres_data:/var/lib/postgresql/data postgres:15
        
 # 进入容器
 docker exec -it postgres_container /bin/bash
        
 # 进入容器后:
 su postgres
        
 # 运行数据库客户端
 psql
        
 # 根据需要删除数据库。

# 完成后:
docker stop postgres_container
docker rm postgres_container
docker rmi postgres:15

在尝试重新启动 discourse 之前,您可能需要重新启动 docker。

service restart docker.
2 个赞