参考:https://gist.github.com/onjin/2dd3cc52ef79069de1faa2dfd456c945
1. docker-compose.yml 配置
version: "3.9"
services:
pic_postgres:
image: postgres:14.4-alpine
container_name: pic_postgres
restart: always
environment:
POSTGRES_USER: web
POSTGRES_PASSWORD: 642a4dc6-cc76-4ebb-b828-f2c6125911a4
ports:
- 53432:5432
volumes:
- ./postgresql/data:/var/lib/postgresql/data
- ./postgresql/init.sql:/docker-entrypoint-initdb.d/init.sql
./postgresql/data
- 存放数据库数据的目录./postgresql/init.sql
- 初始化数据库的 sql 脚本,创建数据库,及数据库表结构等操作
2. 测试 PG 的状态
来源:https://stackoverflow.com/questions/46516584/docker-check-if-postgres-is-ready
核心命令:pg_isready
DOCKER_CONTAINER_NAME="mypgcontainer"
timeout 90s bash -c "until docker exec $DOCKER_CONTAINER_NAME pg_isready ; do sleep 5 ; done"