直接在本地计算机上安装 PostgreSQL 可能很麻烦 - 冗长的步骤、特定于作系统的怪癖和潜在的冲突。幸运的是,Docker 使该过程变得超级简单、快速和可移植。让我们来看看如何在 Docker 容器中运行 PostgreSQL。

为什么 docker 中的 postgres ?

  • 您无需直接在系统上安装 PostgreSQL。
  • 您可以运行多个版本的 PostgreSQL
  • Docker 将数据库与主机作系统隔离开来,从而降低了破坏其他内容的风险。

安装 Docker Desktop

首先,您需要下载 docker desktop 并安装并注册。如果您已经完成了此作,则可以跳过此过程。请确保 docker desktop 正在运行整个进程。

注册并安装 docker desktop

运行 PostgreSQL 容器

打开终端并运行命令

docker run --name docker-postgres -e POSTGRES_PASSWORD=mypassword -p 5431:5432 -d postgres:16
 

故障

  • --name : name 代表容器的名称。
  • -e : e 代表环境变量。我们正在设置一个环境POSTGRES_PASSWORD。POSTGRES_USER 被指定为 postgres。如果要使用相同的名称 env 变量,可以更改它。
  • -d : d 代表分离模式。
  • postgres:16 :这是将要运行的图像。如果 postgres:16 图像已存在,它将使用该图像。如果没有,它将从 dockerhub 拉取。
  • -p 5431:5432:将主机 (localhost) 上的端口 5432 映射到容器中的端口 5432。如果已在本地安装了 PostgreSQL,请更改主机端口(例如 )以避免冲突。-p 5431:5432

  • -e POSTGRES_DB=mydatabase :如果未添加此环境,则会创建名为 postgres 的默认数据库。如果你想将数据库命名为其他名称,你可以使用这个 env.

运行此命令后,验证容器是否在 Docker Desktop UI 中运行:

注册并安装 docker desktop

检查 docker 容器是否正在运行

docker ps
 

它应该为您提供当前正在运行的所有容器的列表。检查您的容器名称。

正在运行的 Docker 容器列表

连接到 postgres

现在,为了连接到在 docker 容器中运行的 postgreql,请运行命令

docker exec -it docker-postgres psql -U postgres
 

故障:

  • docker-postgres:您的容器名称
  • psql:要在容器内运行的命令。psql 附带 PostgreSQL 映像。
  • -U postgres:告知要连接的用户身份psql
  • -it:以交互方式运行容器并分配虚拟终端
  • exec:在正在运行的容器内执行命令

如何创建新数据库。

如果在创建容器时未提供 env,则会为您分配名为 的默认数据库。如果需要新数据库,请运行命令POSTGRES_DBpostgres

CREATE DATABASE outline_database;
 

如何检查容器内的所有数据库

\l
 

按 此键可退出 psql shell 寻呼机。q

容器内运行的所有数据库的列表

下一步是什么?

现在,您已经在 Docker 中运行了 PostgreSQL,您可以:

  • 使用 pgAdmin、TablePlus 或 DBeaver 等 GUI 进行连接。
  • 在本地开发项目中使用它。
  • 使用 Docker 卷持久保存数据(在以后的文章?中探讨)。在正确的设置中,只有在删除容器时,数据才会丢失。

如果您想在 Docker 卷上发表后续文章或与 pgAdmin 联系,请在评论中告诉我!

可能的错误故障排除

错误 1:OCI Runtime Exec 失败

导致错误的命令:

docker exec -it docker-postgres -U postgres
 

错误信息:

OCI runtime exec failed: exec failed: un   able to start container process: exec: "-U": executable file not found in $PATH: unknown
 

解决方案:
标志属于 ,而不是 。-Upsqldocker exec

正确的命令:

docker exec -it docker-postgres psql -U postgres
 

错误 2:数据库创建失败

导致错误的命令:

CREATE DATABASE outline-database
 

错误信息:

ERROR:  syntax error at or near "-"
LINE 1: CREATE DATABASE outline-database
 

解决 方案:

  1. 数据库名称不能包含连字符(使用下划线)
  2. SQL 命令需要分号终止符

正确的命令:

CREATE DATABASE outline_database;

 

出处:https://dev.to/

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
意见
建议
发表
评论
返回
顶部