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.rdbdocker-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 的知识用不到多少,需要了解一些新版本的设置即可。
有时候对版本不熟悉,就会看到各种写法,就会纠结用哪种,或者出现混用,导致运行不起来,让人感觉寸步难行,所以这里记录一下本人在实际工作中采用的部署,供大家参考。
欢迎搜索及关注:编程人(a_codists)
