创建目录
- 登录飞牛
 
- 打开文件管理
 
- 创建一个存pg数据的目录
 
- 个人建议创建一个 
docker目录,用来专门存放docker容器数据
 

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

具体配置
以 #开头的是注释,可以删除 后面数字标号下面有详细解释
# 项目名称 ¹
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站 秦曱凧