跳转到内容

Docker 部署(PostgreSQL)

本指南与 SQLite 版本共用同一个已发布的生产镜像,但通过 Compose 将应用与 PostgreSQL 组合部署。

PostgreSQL 方案通常需要同时管理应用容器、数据库容器、持久化卷和环境变量。使用 docker compose 可以把这些内容放在同一个文件里统一管理。

应用侧仍然需要以下变量:

  • IMG_AUTH_TOKEN
  • IMG_JWT_SECRET
  • IMG_DATABASE_URL

PostgreSQL 容器还需要自己的初始化变量,例如:

  • POSTGRES_DB
  • POSTGRES_USER
  • POSTGRES_PASSWORD

示例 compose 中,应用使用的是:

postgres://ibed:ibed-password@postgres:5432/ibed

先下载 compose 文件。它会拉取已发布的应用镜像,启动 PostgreSQL,并为数据库和应用数据挂载持久化卷。

Terminal window
curl -L https://docsib.rotcool.me/docker-compose.pgsql.yml -o docker-compose.pgsql.yml

启动前,先把配置文件复制到仓库根目录的 ./deploy/config.toml

Terminal window
mkdir -p deploy
cp config.toml deploy/config.toml

可以先拉取最新发布镜像:

Terminal window
docker compose -f docker-compose.pgsql.yml pull

然后启动整套服务:

Terminal window
docker compose -f docker-compose.pgsql.yml up -d
  • 应用只有在 PostgreSQL 可连接后才能完成启动
  • 示例 compose 为 PostgreSQL 配置了 healthcheck,并等待数据库容器进入 healthy 状态
  • RS-IBED 启动时可能会先连接维护库,然后尝试自动创建目标数据库
  • 因此,配置中的 PostgreSQL 用户通常需要具备连接 postgres 数据库以及创建目标数据库的权限,除非目标数据库已经存在,或者你刻意把目标数据库名设为 postgres

查看服务列表:

Terminal window
docker compose -f docker-compose.pgsql.yml ps

查看应用日志:

Terminal window
docker compose -f docker-compose.pgsql.yml logs -f app

查看 PostgreSQL 日志:

Terminal window
docker compose -f docker-compose.pgsql.yml logs -f postgres

打开 http://localhost:3000/,上传一张测试图片,然后重启整套服务,确认数据库元数据和图片文件都能持久保留。