docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > Docker部署postgresql

Docker部署postgresql的方法实现

作者:Aderversa

本文主要介绍了Docker部署postgresql的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:
阅读全文