设置PostGres时区
- 方法 1: 使用 `POSTGRES_INITDB_ARGS` 设置时区
- 方法 2: 使用初始化脚本设置时区
- 创建 `init-user-db.sql`
- 更新 `docker-compose.yml`
- 启动服务
要在启动 PostgreSQL 数据库时设置时区,可以通过在 docker-compose.yml
文件中添加环境变量或通过配置文件来实现。对于 PostgreSQL,你可以使用 POSTGRES_INITDB_ARGS
环境变量来传递初始化数据库时的参数,包括时区设置。
方法 1: 使用 POSTGRES_INITDB_ARGS
设置时区
可以在 docker-compose.yml
文件中的 environment
部分添加 POSTGRES_INITDB_ARGS
环境变量,并指定时区选项。例如,如果想设置时区为 Asia/Shanghai
,可以这样做:
version: '3.9'
services:dbpg16:image: 192.168.1.111:5000/crm/postgres:16.5container_name: pg_db_16restart: alwaysports:- "25432:5432"- "22779:22"environment:- POSTGRES_DB=postgres- POSTGRES_PASSWORD=odoo- POSTGRES_USER=odoo- PGDATA=/var/lib/postgresql/data/pgdata- POSTGRES_INITDB_ARGS=--timezone='Asia/Shanghai' # 设置时区volumes:- ./odoo-db-data:/var/lib/postgresql/data/pgdata- ./etc/pgbackrest:/etc/pgbackrest
volumes:odoo-db-data:
方法 2: 使用初始化脚本设置时区
如果需要更复杂的初始化操作,或者想要确保每次启动容器时都应用某些设置,可以使用一个初始化 SQL 脚本来设置时区。首先创建一个 SQL 文件(例如 init-user-db.sql
),然后将其挂载到容器中。
创建 init-user-db.sql
在你的项目目录下创建一个名为 init-user-db.sql
的文件,并添加以下内容:
-- 设置时区
SET timezone = 'Asia/Shanghai';
dockercomposeyml_44">更新 docker-compose.yml
修改 docker-compose.yml
文件以包含该初始化脚本:
version: '3.9'
services:dbpg16:image: 192.168.1.111:5000/crm/postgres:16.5container_name: pg_db_16restart: alwaysports:- "25432:5432"- "22779:22"environment:- POSTGRES_DB=postgres- POSTGRES_PASSWORD=odoo- POSTGRES_USER=odoo- PGDATA=/var/lib/postgresql/data/pgdatavolumes:- ./odoo-db-data:/var/lib/postgresql/data/pgdata- ./etc/pgbackrest:/etc/pgbackrest- ./init-user-db.sql:/docker-entrypoint-initdb.d/init-user-db.sql # 挂载初始化脚本
volumes:odoo-db-data:
启动服务
完成上述更改后,运行以下命令来启动服务:
docker-compose up -d
这将根据你的配置启动 PostgreSQL 容器,并根据所选的方法之一设置时区。