一、 说明
系统

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 的

更多推荐