欢迎来到容器化的世界!使用 Container Manager 安装服务(如 PostgreSQL)有几个巨大的好处:
- 环境隔离:不会弄乱你的 Synology 系统。
- 易于迁移和更新:管理和升级都非常方便。
- 资源控制:可以限制容器使用的 CPU 和内存。
我们将分三步走:准备工作 -> 安装与配置 -> 验证与连接。
第一步:准备工作 (创建文件夹并设置权限)
在启动容器之前,最重要的一步是为 PostgreSQL 准备一个“家”。这个“家”就是 Synology 上的一个文件夹,用来永久存放数据库的所有数据。这样即使容器被删除或重建,你的数据也安然无恙。
- 创建共享文件夹 (如果还没有的话)
- 打开群晖 DSM 桌面,进入 控制面板 > 共享文件夹。
- 点击 新增,创建一个专门用来存放所有容器数据的共享文件夹。一个常见的做法是命名为 docker。
- 在其他设置中保持默认即可,点击“下一步”直到完成。
- 为 PostgreSQL 创建专用数据文件夹
- 打开 File Station。
- 进入你刚刚创建的 docker 共享文件夹。
- 在 docker 文件夹内,点击 新增 > 新增文件夹,创建一个名为 postgresql 的文件夹。
- 再进入 postgresql 文件夹,创建一个名为 data 的子文件夹。
- 现在,你的文件夹路径应该是:/docker/postgresql/data。这个路径非常重要,请记下来。
- 分配文件夹权限 (关键步骤!但是确认有权限可以跳过本步骤)
PostgreSQL 容器内部运行的用户不是 root,而是一个名为 postgres 的特定用户。我们需要确保这个用户有权限读写我们刚刚创建的 data 文件夹。
-
- 在 File Station 中,右键点击 data 文件夹,选择 属性。
- 切换到 权限 标签页,然后点击 新增。
- 在“用户或组”的下拉菜单中,选择 系统内部用户。
- 在下面的用户列表中,找到并选择 postgres (想要的ID)。
- 在下方的“权限”区域,勾选 读取 和 写入 的所有复选框,给予完全控制权限。
- 点击 完成 保存设置。

-
- 新手提示:为什么要做这一步?因为容器内的 postgres 用户(其用户ID通常是999)需要在你的NAS文件系统上写入数据。如果你不给它权限,容器启动时会因为“Permission denied”(权限被拒绝)而不断重启失败。

第二步:在 Container Manager 中安装和配置 PostgreSQL
准备工作就绪,现在可以正式开始安装了。
- 打开 Container Manager
- 从套件中心安装并打开 Container Manager。
- 下载 PostgreSQL 映像 (Image)

-
- 在 Container Manager 的左侧菜单中,点击 镜像仓库。 (默认加好仓库,不会看截图,国内的毫秒镜像速度还可以)
- 在顶部的搜索框中输入 postgreSQL,然后按回车。
- 你会看到官方的 postgresSQL 映像排在第一个。双击它或者点击后选择“下载”。
- 系统会提示你选择标签 (Tag)。你可以选择一个具体的版本号(如 15、16),或者直接使用 latest(最新版)。点击 下载,系统会开始下载映像。你可以在左侧的 映像 菜单中看到下载进度。
-

- 创建并配置容器 (Container)
- 映像下载完成后,在 映像 页面选中 postgres (或你下载的版本),然后点击顶部的
运行 按钮。 - 此时会弹出一个配置向导,我们来逐一设置:

- 映像下载完成后,在 映像 页面选中 postgres (或你下载的版本),然后点击顶部的
a. 常规设置
-
- 容器名称:默认即可,有偏好的话可以起一个有意义的名字
启用自动重新启动:强烈建议勾选此项。这样如果NAS重启或者容器意外关闭,它会自动重新启动。 - 点击 下一步。

- 容器名称:默认即可,有偏好的话可以起一个有意义的名字
b. 端口设置 (Port Settings)
-
- 这是将容器内部的端口映射到你的 Synology NAS 上的端口。
- PostgreSQL 默认在容器内部使用 5432 端口。
- 本地端口:这里你可以设置一个你NAS上未被占用的端口。不建议直接使用 5432,因为可能会和其他服务冲突。你可以设置为 5433、15432 等。我们以 15433 为例。
- 容器端口:这里必须填写 5432 (这是固定的)。
- 类型:保持 TCP 默认。
- 设置看起来像这样:本地端口 15433 -> 容器端口 5432。
- 新手提示:以后从其他电脑或应用连接数据库时,你将使用你NAS的IP地址和你设置的 本地端口(例如 192.168.1.223:15433)。
- 点击 下一步。

c. 存储空间设置 (Volume Settings)
-
- 这就是我们将第一步创建的文件夹与容器内部的数据目录关联起来的地方。
- 点击 添加文件夹。 (见上一张端口设置图)
- 文件/文件夹:选择我们之前创建的路径 /docker/postgresql/data。
- 装载路径:这里必须填写 PostgreSQL 容器内部存放数据的标准路径,即 /var/lib/postgresql/data。请勿修改此路径!
- 设置看起来像这样:文件/文件夹 /docker/postgresql/data -> 装载路径 /var/lib/postgresql/data。
- 权限:保持 读/写。
- 点击 下一步。
d. 环境 (Environment Variables)
-
- 这是设置数据库用户名、密码和初始数据库名称的地方。非常重要!
- 点击 添加 来创建以下三个变量:
- 变量 1
- 变量名: POSTGRES_PASSWORD
- 值: your_strong_password (替换成一个你自己设定的强密码)
- 变量 2 (可选,但推荐)
- 变量名: POSTGRES_USER
- 值: my_db_user (替换成你想要的数据库用户名,不设置默认为 postgres)
- 变量 3 (可选,但推荐)
- 变量名: POSTGRES_DB
- 值: my_first_db (替换成你希望初始创建的数据库名称,不设置默认为 POSTGRES_USER 的同名数据库)
- 变量 1
- 新手提示:这些变量只在数据库第一次初始化时生效。之后修改这些值不会改变已创建好的数据库的用户名和密码。
- 点击 下一步。

- 完成创建
- 最后一步是 摘要 页面。仔细检查你的所有设置:端口、空间、环境变量。
- 确认无误后,点击 完成。
- Container Manager 会创建并启动你的 PostgreSQL 容器。
第三步:验证与连接
- 检查容器状态
- 在 Container Manager 的左侧菜单中,点击 容器。
- 你应该能看到刚刚创建的 postgresql-main 容器,状态显示为 运行中。绿点为正确
- 如果容器在不断重启,通常是权限问题。双击容器,查看 日志,错误信息会告诉你原因。最常见的就是 /var/lib/postgresql/data 的权限问题,请回到第一步第3点仔细检查。
- 一个正常的启动日志最后几行会显示类似 "database system is ready to accept connections" 的信息。

- 使用数据库客户端连接
现在,你可以使用任何标准的数据库客户端(如 DBeaver, pgAdmin, 推荐 Navicat 17 等)来连接你的新数据库了。以下是连接时需要填写的参数:
-
- 主机 (Host): 你的 Synology NAS 的局域网 IP 地址 (例如: 192.168.1.223)
- 端口 (Port): 你在 端口设置 中填写的 本地端口 (例如: 15433)
- 数据库 (Database): 你设置的 POSTGRES_DB 的值 (例如: my_first_db)
- 用户名 (Username): 你设置的 POSTGRES_USER 的值 (例如: my_db_user)
- 密码 (Password): 你设置的 POSTGRES_PASSWORD 的值 (例如: your_strong_password)
点击“测试连接”或“连接”,如果一切顺利,你就能成功连接到运行在 Synology 上的 PostgreSQL 数据库了!

总结
恭喜你!你已经成功地在 Synology 上通过 Container Manager 安装并配置了一个功能齐全、数据持久化的 PostgreSQL 数据库。
回顾一下关键点:
- 先建文件夹,再设权限:这是保证数据安全和容器正常运行的基础。
- 端口映射要清晰:分清“本地端口”(你访问用的)和“容器端口”(固定的)。
- 卷映射是核心:将NAS文件夹映射到容器内 /var/lib/postgresql/data,实现数据持久化。
- 环境变量定身份:通过 POSTGRES_PASSWORD 等变量来初始化数据库。
希望这份详细的指南对你有所帮助!享受容器化带来的便利吧!
1万+

被折叠的 条评论
为什么被折叠?



