使用Docker部署postgresql - 教程

news/2026/1/9 3:33:16/文章来源:https://www.cnblogs.com/gccbuaa/p/19448392

使用Docker部署postgresql

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

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

  • 直接使用命令行来创建postgres的容器并运行;
  • 使用docker-compose来创建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
  • -e是用来设置postgres容器中环境变量的值的,有些特殊的环境变量将会影响到启动后的postgresql的一些参数,比如postgresql数据库的密码、用户等等。具体一些环境变量的含义可以查看dockerhub中有关于环境变量的介绍,本文的最后也会介绍一些环境变量的含义。
  • -p将PostgreSQL的5432端口暴露到宿主机的5432端口,方便我们在外部访问容器内的PostgreSQL服务。
  • -v将容器内的/var/lib/postgresql/data文件夹挂载到宿主机的~/postgresql/data文件夹下,这样数据库中的数据就不会因为我们删除了容器而丢失。你需要自己定义好这个数据文件夹该挂载到自己主机的什么地方上,这里我给出的值仅做参考。
  • --name postgres-exprdb指定创建的PostgreSQL容器的名字。
  • -d表示该容器在后台运行,并打印创建容器的ID到控制台。
  • 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
  • -f指定要要操作的文件。
  • -p指定项目的名称。
  • up是创建并启动容器的命令。
  • -d表示容器在后台启动。

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

version: "3.8"
services:database_expr:image: postgres:latestcontainer_name: postgres-exprrestart: on-failure:3ports:- 5432:5432volumes:- ./db:/var/lib/postgresql/datahealthcheck:test: [ "CMD", "pg_isready" ]interval: 10stimeout: 5sretries: 5environment:- 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来查看:

  • -h指定PostgreSQL数据库的IP地址。
  • -p指定PostgreSQL数据库的端口号。
  • -U指定登录到数据库的用户名,不指定默认就是root
  • -w从不提示输入密码,字面意思,不需要输入密码来进行访问数据库,默认是不需要输入密码的。
  • -W强制密码输入。

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

# 这里由于我们在创建容器的时候指定的特权用户是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 termsh for help with SQL commands? for help with psql commandsg or terminate with semicolon to execute queryq to quit

这里它告诉我们:

  • copyright,可以PostgreSQL DDMS的一些条款,里面大概是说:不管你出于何种目的,该软件和其文档都是允许你使用、复制、修改和发布的,并且是不需要任何费用,不需要修改的同意…看起来是非常宽松的声明,毕竟PostgreSQL遵循的是BSD协议。

  • h显示SQL命令,比如CREATE TABLEALTER TABLE…。

  • ?显示psql的命令,这里面还是非常多命令的,大多都是用来查看数据库的状态的,比如存在什么表、数据库、视图之类的。这里介绍一些常用的、简单的命令:

    • l,列出所有数据库;
    • c[onnect],连接到数据库某个数据库,如果先前有连接到某个数据库那么这个操作就是更换连接的数据库;
    • dt,查看正在使用的数据库中存在哪些表(注意,默认创建的表似乎是不会列出来的);
  • g执行psql的上一个命令。

  • q退出psql。

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

create table user ( id int primary key );

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

创建完成后可以使用:

dt

来查看你是否创建成功。

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

补充postgres容器的环境变量

  • POSTGRES_PASSWORD必要的环境变量。这个环境变量将设置PostgreSQL容器中特权用户的密码。如果你要使用PostgreSQL镜像,让它以容器的形式的运行,那么这个环境变量就必须要设置,它一定不能够为空或者未定义。默认的特权用户将由POSTGRES_USER来定义。
  • POSTGRES_USER,可选的环境变量。设置PostgreSQL容器中的特权用户名,需要与POSTGRES_PASSWORD一起使用,以此设置好特权用户的名字和密码。如果该环境变量未被指定,那么默认的特权用户名为postgres
  • POSTGRES_DB,可选的环境变量。定义容器首次运行创建的默认数据库的名字。如果该环境变量未被使用,那么该环境变量的值等于POSTGRES_USER的值。
  • POSTGRES_INITDB_ARGS,可选的环境变量。大概最终是以这种方式被利用:postgres initdb ${POSTGRES_INITDB_ARGS}
  • POSTGRES_INITDB_WALDIR,可选的环境变量。定义PostgreSQL事务日志的位置。默认的事务日志的位置是PostgreSQL主数据文件夹(PGDATA指定)下的一个子文件夹。
  • POSTGRES_HOST_AUTH_METHOD,可选的环境变量。(个人理解,似乎是与密码摘要相关的东西,这一般不需要我们关注,如果有兴趣可以去PostgreSQL: Documentation: 14: 21.5. Password Authentication了解一下)。
  • PGDATA,可选的环境变量。定义PostgreSQL主数据文件夹的位置,默认是/var/lib/postgresql/data,如果有调整位置的需求那么可以按需求设置该变量的值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1119191.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2026年优秀的数据中心液冷管,半导体设备液冷管,充电桩液冷管厂家行业头部榜单 - 品牌鉴赏师

引言在当今科技飞速发展的时代,数据中心、半导体设备以及充电桩等领域对液冷技术的需求日益增长,液冷管作为液冷系统的关键组件,其质量和性能直接影响着整个系统的运行效率和稳定性。为了给行业内的企业和用户提供一…

2026年玉玲湘绣口碑排名,玉玲湘绣客服态度好不好、大师团队水平及口碑解析 - 工业品网

湘绣作为中国四大名绣之一,承载着千年的文化底蕴与精湛技艺,而沙坪玉玲湘绣作为行业内的佼佼者,一直备受消费者关注。今天,我们将围绕玉玲湘绣客服态度好不好、玉玲湘绣大师团队水平、玉玲湘绣口碑好吗这几个核心问…

2026年口碑好的沈阳阳光房,沈阳门窗厂家选型推荐名录 - 品牌鉴赏师

引言在2026年的沈阳,阳光房和门窗市场呈现出蓬勃发展之势,众多消费者在选择相关产品时往往面临着诸多困惑。为了给消费者提供真实、公正、客观的参考,我们依据国内相关行业协会测评权威数据,结合多份行业白皮书内容…

反射型跨站脚本攻击解析:HTML上下文(无编码)漏洞的技术剖析

本文详细分析了反射型跨站脚本(XSS)漏洞的利用过程。当搜索参数在HTML上下文中未经任何编码直接输出时,攻击者可通过标签注入并执行任意JavaScript代码,最终通过BurpSuite工具完成漏洞验证与利用演示。反射型跨站脚本…

2026年电力智能运维解决方案提供商推荐:靠谱服务企业有哪些? - 工业品牌热点

本榜单依托电力行业全维度调研与真实客户口碑,深度筛选出五家标杆企业,聚焦电力智能运维核心需求,为行业选型提供客观依据,助力精准匹配适配的服务伙伴。 TOP1 推荐:重庆览辉信息技术有限公司 推荐指数:★★★★…

MLflow跟踪医疗实验稳住模型迭代

📝 博客主页:jaxzheng的CSDN主页 MLflow:医疗AI实验管理的稳定器——从追踪到迭代的革命性实践目录MLflow:医疗AI实验管理的稳定器——从追踪到迭代的革命性实践 引言:医疗AI迭代的隐性危机 一、医疗AI模型迭代的核心痛…

Python+Vue的江西省铅山县鹅湖书院景点网站 Pycharm django flask

这里写目录标题项目介绍项目展示详细视频演示技术栈文章下方名片联系我即可~解决的思路开发技术介绍性能/安全/负载方面python语言Django框架介绍技术路线关键代码详细视频演示收藏关注不迷路!!需要的小伙伴可以发链接或者截图给我 项目介绍 江西省铅山…

LWE和RLWE问题

LWE和RLWELWE 和 RLWE 问题 目录教程介绍数学基础回顾格理论基础LWE 问题深度解析LWE 安全性证明LWE 密码学应用RLWE 问题深度解析RLWE 安全性证明RLWE 密码学应用实现与优化技术实际案例分析课后练习1. 教程介绍 1.1 …

2026 GRC高架地板定制价格、推荐品牌与权威服务TOP5:行业深度测评指南 - 工业推荐榜

在现代建筑智能化与绿色化转型进程中,GRC高架地板因轻量化、环保性、灵活布线等特性,成为商业综合体、金融大厦、研发基地等场景的核心地面材料。2024年数据显示,国内GRC高架地板市场规模超60亿元,年增速32%,但用…

no user logged in please autorig to trigger log-in flow

目录 解决方法: no user logged in please autorig to trigger log-in flow 解决方法: 看output log,把日志发给gpt, 结果,禁用代理,竟然ok了。 梯子软件也关了, @echo off set HTTP_PROXY= set HTTPS_PROXY= set NO_PROXY=api.epicgames.dev,datarouter.ol.epicgam…

Python+Vue的大学生体测管理系统 Pycharm django flask

这里写目录标题项目介绍项目展示详细视频演示技术栈文章下方名片联系我即可~解决的思路开发技术介绍性能/安全/负载方面python语言Django框架介绍技术路线关键代码详细视频演示收藏关注不迷路!!需要的小伙伴可以发链接或者截图给我 项目介绍 近年来&am…

2026中国GEO公司揭晓!AI浪潮下的行业变革引领者 - 品牌测评鉴赏家

2026中国GEO公司揭晓!AI浪潮下的行业变革引领者数字化与AI技术双重驱动下,国内GEO服务市场迎来爆发式增长,成为企业数字化转型与全球化布局的核心支撑。2025年我国GEO服务市场规模达580亿元,预计2026年将突破700亿…

2026 靠谱足球预测博主 TOP5 推荐:战术、权威与温度全覆盖,观赛不踩坑 - 资讯焦点

2026 靠谱足球预测博主 TOP5 推荐:战术、权威与温度全覆盖,观赛不踩坑 随着欧冠、英超、西甲等顶级赛事热度持续攀升,球迷对专业赛事分析、精准走势预测的需求愈发强烈。靠谱的足球预测博主能帮你穿透赛场表象,拉平…

高薪Offer背后:拆解一位转型AI产品经理的核心策略、知识体系与面试突围要点!

在人工智能技术驶入发展快车道的今天,AI 产品经理已然跃升为科技行业的 “香饽饽” 岗位。无论是手握计算机、软件工程专业文凭的应届毕业生,渴望在新兴领域开启职业生涯;还是在互联网公司深耕多年的技术开发人员,寻求从 “代码实…

一般纳税人做账、报税

一般纳税人做账、报税一、做账,勾选进项; 1、先做账; 2、电子税务局勾选确认(进项)发票; 3、电子税务局勾选确认的进项税额,与结转进项税额的进项一致; 二、申报增值税; 越努力,越幸运!!! good good s…

【课程设计/毕业设计】机器学习基于python深度学习的餐桌美食识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

深度学习毕设项目推荐-人工智能基于python深度学习识别水果的成熟度

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

Python+Vue的气象信息发布和实时查询平台 Pycharm django flask

这里写目录标题项目介绍项目展示详细视频演示技术栈文章下方名片联系我即可~解决的思路开发技术介绍性能/安全/负载方面python语言Django框架介绍技术路线关键代码详细视频演示收藏关注不迷路!!需要的小伙伴可以发链接或者截图给我 项目介绍 天气联系着…

2026最新三轮车差速器企业top5推荐榜!优质生产厂家及服务商解析/选择指南 - 全局中转站

引言 随着绿色出行理念的深化与短途交通需求的升级,三轮车作为城乡物流、代步及特种作业的重要工具,其核心传动部件的性能与可靠性愈发受到市场关注。据中国自行车协会《2025年三轮车行业技术发展白皮书》显示,差速…

知声教育靠谱吗? - 资讯焦点

靠谱,但前提是你肯练。 我是今年9月报的知声教育播音系统课,起因是公司在做短视频账号,领导一句“你声音条件不错,干脆自己配”,就把我逼上了梁山。预算有限,我在百度扒了整整7天评价,越看越慌——有人说老师专…