Skip to content

集成 PostgreSQL

通过在 OlaresManifest.yaml 中声明依赖,并将系统注入的配置值映射到容器的环境变量中,即可在应用中使用 Olares 提供的 PostgreSQL 服务。

PostgreSQL 已安装

PostgreSQL 服务在 Olares 中默认已安装。

配置 OlaresManifest.yaml

OlaresManifest.yaml 中添加所需的中间件配置。

  • 使用 scripts 字段指定数据库创建完成后需要执行的 SQL 脚本。
  • 使用 extensions 字段为数据库添加所需的扩展。

脚本中的变量注入

系统会提供两个变量 $databasename$dbusername,在执行脚本时由 Olares 应用运行时自动替换。

示例

yaml
middleware:
  postgres:
    username: immich
    databases:
    - name: immich
      extensions:
      - vectors
      - earthdistance
      scripts:
      - BEGIN;
      - ALTER DATABASE $databasename SET search_path TO "$user", public, vectors;
      - ALTER SCHEMA vectors OWNER TO $dbusername;
      - COMMIT;

注入环境变量

在应用的部署 YAML 中,将系统注入的 .Values.postgres.* 字段映射为应用所使用的环境变量。

示例

yaml
containers:
  - name: my-app
    env:
      # 在 OlaresManifest 中配置的数据库名称,
      # 对应 middleware.postgres.databases[i].name
      # 注意:将 <dbname> 替换为 Manifest 中定义的实际名称(例如 immich)
      - name: DB_POSTGRESDB_DATABASE
        value: {{ .Values.postgres.databases.<dbname> }}
      
      # 主机地址
      - name: DB_POSTGRESDB_HOST
        value: {{ .Values.postgres.host }}
      
      # 端口
      - name: DB_POSTGRESDB_PORT
        value: "{{ .Values.postgres.port }}"
      
      # 用户名
      - name: DB_POSTGRESDB_USER
        value: {{ .Values.postgres.username }}
      
      # 密码
      - name: DB_POSTGRESDB_PASSWORD
        value: {{ .Values.postgres.password }}

PostgreSQL Values 参考

PostgreSQL Values 是在部署过程中由系统自动注入到 values.yaml 中的预定义变量。这些值由系统统一管理,用户无法自行修改。

类型说明
.Values.postgres.hostStringPostgreSQL 数据库地址
.Values.postgres.portNumberPostgreSQL 数据库端口
.Values.postgres.usernameStringPostgreSQL 数据库用户名
.Values.postgres.passwordStringPostgreSQL 数据库密码
.Values.postgres.databasesMap<String,String>PostgreSQL 数据库以申请的数据库名作为键。例如,若申请的数据库名为 app_db,可通过 .Values.postgres.databases.app_db获取对应值。