收起左侧

postgres数据库compose部署方法(自用)及部分compose参数详解

4
回复
188
查看
[ 复制链接 ]

44

主题

61

回帖

0

牛值

初出茅庐

创建目录

  • 登录飞牛
  • 打开文件管理
  • 创建一个存pg数据的目录
  • 个人建议创建一个 docker目录,用来专门存放docker容器数据
    • 在这个目录中每一个容器就在建立一个专门的目录

PixPin_2025-08-22_02-13-25.png

创建docker

  • 打开 docker
  • 转到 Compose
  • 新增项目
    • 项目名称 postgres
      不要有中文和特殊符号
    • 路径选择刚才建立的
    • 来源 创建
    • 创建并启动

PixPin_2025-08-22_03-04-16.png

具体配置

#开头的是注释,可以删除 后面数字标号下面有详细解释

# 项目名称 ¹
name: postgres

# compose 版本号 ²
# version: "3.3"

services:
  postgres:
    # 容器名称 ³
    container_name: pg16
    # 镜像地址 ⁴
    image: postgres:16.9-alpine3.22
    # 网络模式 桥接
    network_mode: bridge
    # 重启策略 自动重启
    restart: always
    # 最大占用cpu线程 ⁵
    cpus: 1
    # 最大内存占用 ⁶
    mem_limit: 512m
    # 日志限制 ⁷
    logging:
      options:
        # 产生的日志文件大小上限
        max-size: "1m"
        # 日志文件的最大份数
        max-file: "3"
    # 环境变量 ⁸
    environment:
      # 下面两行是时区设置成中国用的时区,北京时间
      TZ: Asia/Shanghai
      TIME_ZONE: Asia/Shanghai
      # 管理员 postgres 的密码 必须
      POSTGRES_PASSWORD: 管理员密码
    # 端口映射 ⁹
    ports:
      - 5432:5432
    # 文件映射 ¹⁰
    volumes:
      - ./data:/var/lib/postgresql/data

配置文件说明

  • ¹ 在使用compose部署项目时,项目名称是必须得,不过可以不写,项目名称的取值优先级 命令参数>name值>compose文件所在文件夹名称,飞牛指定的项目值就属于是 命令参数,不过建议还是在用 name值的方式指定一下
  • ² compose 版本号,在新版docker compose中这个值废弃了写上会有警告,但是老版本中必须写,飞牛不需要写。
  • ³ 容器名称 可以不写,会自动生成,但是强烈建议写上,要不然容器多了,要管理时,自动生成的可能会不好找
  • ⁴ 镜像地址 必须,强烈建议写上具体的版本号,不要不写或写 latest
    • 不要就是默认的 latest 这个会拉取当前最新版
    • 在使用数据库容器,或容器要配合其他容器时强烈建议写上,要不然容器有更新时要是出现新旧版本数据不兼容会出大问题,特别是数据库
    • pg数据库的版本,建议填写带有 alpine的,这个镜像是体积最小的
  • 资源占用
    可以不写,就会不做任何限制,但是强烈建议写上,要不然容器万一出现问题大量占用资源,会让宿主机卡死,切身体会!
    • ⁵ 最大占用cpu线程 一般容器填写 1就完全够用了
    • ⁶ 最大内存占用 一般容器填写 512M也就够用了,如果占用内存大,可以用 G最单位,比如填写 1G
  • ⁷ 日志限制
    可以不写,但是如果容器产生的日志过过,会大量占用硬盘容量,飞牛默认一个日志文件最大 100m,最多好像是 5个文件
  • ⁸ 环境变量
    这个需要具体容器具体分析,从官方给出的部署文档中获取
    • 冒号左边 具体环境变量的名称 千万不要改
    • 冒号右边 环境变量的值,有特殊符号或空格,需要用双引号包起来
    • POSTGRES_PASSWORD 管理员 postgres 的密码 必须
    • POSTGRES_USER 创建新的超级用户,此可选环境变量与 POSTGRES_PASSWORD 结合使用,以设置用户及其密码。在不写时,就会使用默认用户 postgres
    • POSTGRES_DB 初始化数据库名称,在不写时就会使用默认数据库 postgres
    • 注意 在pg数据库中,上面的环境变量仅在数据库初始化的时候生效,如果数据库中有东西,会忽略,如果还需要修改或创建对应的值,就需要进入数据库终端使用命令创建,或使用图像化数据库管理软件链接上数据库后操作
  • ⁹ 端口映射
    • 冒号右边的是容器内部端口,这个不能改,除非容器有指定监听端口的功能
    • 冒号左边的是映射到宿主机中的端口,这个随便改,大于1024就可以
    • 容器报错中出现 bind字样一般就是宿主机端口被占用了,改一个就好了
  • ¹⁰ 文件映射
    将容器产生的数据持久化,容器在重启或重新部署后数据还在
    • 冒号右边 容器内部路径,千万不要随便改,除非你知道要做什么
    • 冒号左边,宿主机中的路径,需要自定义
      • ./ 表示当前目录,也就是 docker-compose-yml所在的目录(这个仅限飞牛NAS,我发现有的NAS就不是)
      • ./data 就表示在 docker-compose-yml文件所在的目录中的 data目录,不存在会自动创建

还有问题就留言。

或者需要远程的朋友,需要可联系。
微信号 E-0_0-
闲鱼搜索用户 明月人间
或者邮箱 firfe163@163.com
B站 秦曱凧

收藏
送赞
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

44

主题

61

回帖

0

牛值

初出茅庐

7 天前 楼主 显示全部楼层

这个是pg官方的容器教程,还有很多其他机构打包的pg数据库,很大可能不适用。

44

主题

61

回帖

0

牛值

初出茅庐

7 天前 楼主 显示全部楼层

出 两条 DDR4 3200 16GB 内存条

12

主题

154

回帖

0

牛值

初出茅庐

请问这个。。。有什么用?

有几个postgres进程 老是唤醒我的sda4 跟这个有关系吗?

这个就是一个很详细的postgres数据库用compose方式部署的教程啊。 至于唤醒硬盘,这个就不清楚了,猜测数据库数据是否就sda4手保存数据  详情 回复
5 天前

44

主题

61

回帖

0

牛值

初出茅庐

5 天前 楼主 显示全部楼层
aliang 发表于 2025-8-24 10:42
请问这个。。。有什么用?
有几个postgres进程 老是唤醒我的sda4 跟这个有关系吗?
...

这个就是一个很详细的postgres数据库用compose方式部署的教程啊。
至于唤醒硬盘,这个就不清楚了,猜测数据库数据是否就sda4手保存数据
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则