Docker部署PostgreSQL

一、 说明

  • 系统

    Ubuntu 24.04。

  • PostgreSQL 版本

    18。

  • Docker 版本

    29.1.3。

  • Docker Compose 版本

    v5.0.0。

二、部署

目录结构

/www/common# tree -a -L 3 $(pwd)
/www/common
├── .env
├── docker-compose.yml
├── mysql
│   ├── conf.d
│   │   └── custome.conf
│   └── data

├── nginx
│   ├── conf.d
│   │   └── python_talk.conf
│   ├── logs
│   │   ├── access.log
│   │   ├── error.log
│   │   └── python_talk
│   └── nginx.conf
├── postgres
│   └── data

└── redis
    ├── conf
    │   └── redis.conf
    └── data
        └── dump.rdb

docker-compose.yml

 # filename: docker-compose.yml

# 虽然新版的 docker compose 已经不推荐使用 version, 但是考虑到向后兼容性,暂保留.
version: '3'

services:
  postgres:
    image: postgres:18.4
    container_name: postgres
    restart: always
    hostname: postgres 
    environment:
      TZ: Asia/Shanghai
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} # ${POSTGRES_PASSWORD} 来自于 .env 文件
    ports:
      - "5432:5432"
    volumes:
      - ./postgres/data:/var/lib/postgresql/18/docker # 从 18 开始这样设置,18之前是:/var/lib/postgresql/data
     networks:
      - default  # 如果有多个服务,使用 default 的好处是如果 name 变化,只要改一个地方即可;如果只有一个,那么也可以直接使用自定义的 name

networks:
  default:
    name: backend  # 这是 network 的名称
    external: true  # external 的意思是:是否使用外部创建的 network;如果为 True, 需要手动创建。

.env

# filename: .env. 
# .env 和 docker-compose.yml 位于同一层目录

# Postgres
POSTGRES_PASSWORD=root

三、总结

工作中用 PostgreSQL 较少,这里做一个记录,Docker 部署的话重点是了解 Docker, Docker Compose 的用法,PostgreSQL 的知识用不到多少,需要了解一些新版本的设置即可。

有时候对版本不熟悉,就会看到各种写法,就会纠结用哪种,或者出现混用,导致运行不起来,让人感觉寸步难行,所以这里记录一下本人在实际工作中采用的部署,供大家参考。

20140101_codists_qr

欢迎搜索及关注:编程人(a_codists)

posted @ 2026-06-30 21:36  codists  阅读(11)  评论(0)    收藏  举报