You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Azure DevOps服务容器中Postgres的timezone配置

在Azure DevOps流水线中配置Postgres服务容器的Timezone参数

我有一个使用Postgres作为服务容器的Azure DevOps流水线定义:

resources:
  containers:
    - container: 'postgres'
      image: 'postgres:14'
      ports:
        - 5432:5432
      env:
        - POSTGRES_USER: '....'
        - POSTGRES_PASSWORD: '....'
        - POSTGRES_DB: '.....'

stages:
  - stage: 'test'
    jobs:
      - job: 'test'
        services:
          postgres: postgres
        pool:
          vmImage: 'ubuntu-latest'
        steps:
          ....

需要修改该镜像运行的postgres可执行文件的timezone配置选项,尝试过两种方法但均失败:

  • 在resources.containers.container下使用options设置:该值会被放在docker create命令的镜像标签之前,Docker无法识别-c timezone=utc这类postgres参数,执行报错。
  • 使用Docker@2步骤手动启动容器:timezone参数被注入到docker start命令中,但报错“unknown flag: --timezone”,因为docker start不支持为容器的ENTRYPOINT/CMD提供参数。

可行解决方案

方案1:通过环境变量POSTGRES_INITDB_ARGS配置

Postgres Docker镜像支持通过POSTGRES_INITDB_ARGS环境变量传递初始化参数,其中包含时区配置:

resources:
  containers:
    - container: 'postgres'
      image: 'postgres:14'
      ports:
        - 5432:5432
      env:
        - POSTGRES_USER: '....'
        - POSTGRES_PASSWORD: '....'
        - POSTGRES_DB: '.....'
        - POSTGRES_INITDB_ARGS: "--timezone=UTC"

该变量会在数据库初始化阶段生效,后续postgres服务运行时会沿用这个时区配置。

方案2:通过command字段指定postgres启动参数

直接覆盖容器的默认启动命令,添加postgres的-c timezone=UTC参数:

resources:
  containers:
    - container: 'postgres'
      image: 'postgres:14'
      ports:
        - 5432:5432
      env:
        - POSTGRES_USER: '....'
        - POSTGRES_PASSWORD: '....'
        - POSTGRES_DB: '.....'
      command: ["postgres", "-c", "timezone=UTC"]

Azure DevOps在创建容器时会使用该命令启动postgres,参数会被正确传递给postgres可执行文件。

内容的提问来源于stack exchange,提问作者Antti Keskinen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 00:23:10