服务器 > 服务器 > 云虚拟主机

Docker部署postgresql的方法实现

16人参与 2025-02-14 云虚拟主机

postgresql数据库在docker中的镜像的名称为postgres,可以从dockerhub中pull下来,如果pull不下来那么很大概率是网络问题导致的,这时候你可能需要在网上找一些能用的镜像源,以成功拉取postgres镜像。

有了postgres的镜像之后,你就可以在本地的docker创建一个postgres的容器并运行。我们有两种方式来创建容器:

这里先介绍使用命令行的方式来创建postgres容器的方式:

docker run -d \
--name postgres-exprdb \
-p 5432:5432 \
-e postgres_password=123456 \
-e postgres_user=aderversa \
-e postgres_db=testdb \
-v ~/postgresql/data:/var/lib/postgresql/data \
postgres

运行上述命令,使用docker ps查看容器状态:

container id   image      command                   created         status         ports                    names
b1f5d4521cd0   postgres   "docker-entrypoint.s…"   8 seconds ago   up 7 seconds   0.0.0.0:5432->5432/tcp   postgres-exprdb

可以看见,容器已经在后台运行了。之后,我们可以使用别的什么工具去访问已经创建好的testdb数据库,用定义好的特权用户aderversa,以及指定好的密码123456

ip已知,端口已知,用户名和密码都有了,那么你就可以用你能想象到的方式去连接这个postgresql数据库啦。

使用docker-compose来部署

相比于在命令行中写冗长的命令,我更喜欢将容器的配置写到docker-compose.yaml文件中,然后一行:

docker compose -f docker-compose.yaml -p package_name up -d

比如,我编写了一个docker-compose.yaml文件:

version: "3.8"

services:
  database_expr:
    image: postgres:latest
    container_name: postgres-expr
    restart: on-failure:3
    ports:
      - 5432:5432
    volumes:
      - ./db:/var/lib/postgresql/data
    healthcheck:
      test: [ "cmd", "pg_isready" ]
      interval: 10s
      timeout: 5s
      retries: 5
    environment:
      - postgres_password=123456
      - postgres_user=aderversa
      - postgres_db=testdb

直接对其进行操作就可以创建好容器并启动,用户不需要关心里面有什么配置。甚至如果你觉得使用docker compose的命令行来启动不够抽象,那么你可以将它编写入shell脚本中,用户直接运行脚本,只要用户安装了docker环境,就可以安装postgresql成功,他甚至不需要关心docker命令应该如何使用。

进入postgres容器中执行sql

使用命令:

docker ps

查找出刚才创建的postgresql容器的id:

container id   image             command                   created        status                  ports                    names
dcf5e3c0ff7f   postgres:latest   "docker-entrypoint.s…"   13 hours ago   up 13 hours (healthy)   0.0.0.0:5432->5432/tcp   postgres-expr

获得container_id = dcf5e3c0ff7f,接着我们使用以下命令进入容器的bash中,方便在操作容器:

docker exec -it dcf5e3c0ff7f /bin/bash

注意,如果是在windows下执行这条命令的时候,使用git bash来执行可能会因为终端的一些问题执行失败,此时需要更换一下执行命令的终端,比如:powershell。

进入到容器中是这个样子的:

> docker exec -it dcf5e3c0ff7f /bin/bash
root@dcf5e3c0ff7f:/# 

第一行是在powershell中执行的,而第二行则是postgresql容器中运行的bash进程。

接着我们就可以使用:

psql [option]... [dbname [username]]

这里介绍连接数据库需要使用的option选项,具体的你可以使用psql --help来查看:

按照这个用法,我们可以用以下两种方式连接数据库:

# 这里由于我们在创建容器的时候指定的特权用户是aderversa,因此root被挤占掉了
# 用户名对于我这里来说是必须设置的。
psql -p 127.0.0.1 -p 5432 -u aderversa testdb 

或者省事一点,直接使用:

psql testdb aderversa

执行成功后我们就能够进入psql的命令行:

psql (17.2 (debian 17.2-1.pgdg120+1))
type "help" for help.

testdb=#

psql的使用

这里我们并不知道如何使用这个命令行,它提示我们可以使用help来获得帮助,那么就执行一波help,得到了以下信息:

you are using psql, the command-line interface to postgresql.
type:  \copyright for distribution terms
       \h for help with sql commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

这里它告诉我们:

以上就是psql的基本用法了,你可以按照自己的在上面执行sql语句,比如:

create table user ( id int primary key );

注意sql命令以;结尾就可以了。

创建完成后可以使用:

\dt

来查看你是否创建成功。

接下来就是你发挥创造力的时候了,自己尝试着使用psql吧。

补充postgres容器的环境变量

到此这篇关于docker部署postgresql的方法实现的文章就介绍到这了,更多相关docker部署postgresql内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网! 

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

利用Docker分层构建优化镜像大小的实现

02-14

docker如何打包前端并运行完整步骤详解

02-14

在Ubuntu下通过Docker部署MySQL服务器的详细步骤

02-14

使用Docker部署的基于binlog实现Mysql8的操作方法

02-14

Docker容器内目录显示异常的解决方法

02-14

VMware虚拟机安装教程

02-14

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论