使用docker compose快速部署pg数据库18及更高版本。
容器镜像加速参考https://1ms.run/?aff=5510
推荐使用最新容器子版本https://hub.docker.com/_/postgres
compose.yaml文件内容如下
bash
# 用于PostgreSQL 18及更高版本。
networks:
pg-net:
name: pg-net
driver: bridge
volumes:
postgresql-data:
name: postgresql-data
services:
postgresql:
image: postgres:18.6
container_name: postgresql
restart: always
networks:
- pg-net
ports:
- "5432:5432"
environment:
- TZ=Asia/Shanghai
- POSTGRES_USER=hive
- POSTGRES_PASSWORD=hive
- POSTGRES_DB=metastore_db
- POSTGRES_INITDB_ARGS=--encoding=UTF8 --lc-collate=C --lc-ctype=C
- POSTGRES_HOST_AUTH_METHOD=md5
volumes:
- postgresql-data:/var/lib/postgresql/
deploy:
resources:
limits:
cpus: '2'
memory: 4g
healthcheck:
test: ["CMD-SHELL", "pg_isready -U hive -d metastore_db"]
interval: 10s
timeout: 5s
retries: 3
start_period: 30s
command: >
-c max_connections=1000
-c shared_buffers=1GB
-c work_mem=32MB
-c maintenance_work_mem=256MB
-c effective_cache_size=3GB
-c checkpoint_completion_target=0.9
-c wal_buffers=16MB
-c default_statistics_target=100
-c log_min_messages=warning
-c log_rotation_size=100MB
-c log_directory=/var/lib/postgresql/data/logs
-c listen_addresses='*'
# 轻量数据库Web管理工具(可选,生产环境可注释关闭)
adminer:
image: adminer:latest
container_name: adminer
restart: always
networks:
- pg-net
ports:
- "8080:8080"
environment:
- TZ=Asia/Shanghai
depends_on:
postgresql:
condition: service_healthy