Docker未使用docker-compose指定的PostgreSQL版本问题求助
解决postgres:15镜像启动后psql版本显示16.1的问题
可能的原因及解决步骤
1. 镜像版本不匹配
配置指定postgres:15,但容器可能实际使用了postgres:16镜像(比如镜像缓存异常、拉取错误)。
- 执行
docker inspect activitiesdb | grep "Image"查看容器使用的镜像ID,对比docker images postgres中postgres:15的镜像ID是否一致。 - 若不一致,重新拉取正确镜像:
docker pull postgres:15 - 重启容器:
docker-compose down && docker-compose up -d
2. 数据卷残留旧版本数据
如果之前用postgres:16启动过容器并复用了db_activities卷,卷中留存的16版本数据会导致版本冲突。
- (可选)备份现有数据:
docker run --rm -v db_activities:/data -v $(pwd):/backup postgres:16 pg_dump -U postgres activitiesdb > backup.sql - 删除旧数据卷:
docker-compose down -v - 重新启动容器:
docker-compose up -d
3. 数据目录挂载路径错误
配置的挂载路径/var/lib/postgresql@15/data不符合官方postgres镜像的默认规范,官方镜像默认数据目录为/var/lib/postgresql/data,错误路径会导致容器未使用挂载卷,转而使用临时存储。
修正docker-compose.yml中的volumes配置:
volumes: - db_activities:/var/lib/postgresql/data
之后重启容器即可。
内容的提问来源于stack exchange,提问作者La Bola Al Riel
相关产品推荐
相关产品推荐

