Azure PostgreSQL数据库无法在Azure文件共享中正确持久化数据
解决PostgreSQL数据无法持久化到Azure文件共享的问题
问题根源
你的Docker Compose配置中将Azure文件卷挂载到了/var/lib/postgresql,但PostgreSQL官方镜像的默认数据存储目录是/var/lib/postgresql/data。挂载上层目录会覆盖镜像原有的目录结构,导致PostgreSQL初始化时无法正确写入数据到预期的data文件夹。
修复步骤
1. 修正挂载路径
修改db服务的volumes配置,将卷挂载到PostgreSQL的实际数据目录:
db: image: postgres:latest # 补充完整镜像标签,比如postgres:15 restart: always environment: POSTGRES_USER: your-user POSTGRES_PASSWORD: your-pass POSTGRES_DB: your-db ports: - 5332:5432 volumes: - db-data:/var/lib/postgresql/data # 修正为data目录 volumes: db-data: driver: azure_file driver_opts: share_name: **** storage_account_name: **** storageaccountkey: ****
2. 确保权限匹配
PostgreSQL容器内部以postgres用户(UID=999)运行,需要确保Azure文件共享目录对该用户有读写权限。可以在db服务中指定用户:
db: # 其他配置... user: "999:999" # 匹配容器内postgres用户的UID/GID
3. 清理旧卷并重启
如果之前已经创建过错误的卷,需要先清理残留数据再重新启动:
docker-compose down -v docker-compose up -d
完成以上步骤后,重启容器即可看到数据正确写入Azure文件共享的data文件夹中。
内容的提问来源于stack exchange,提问作者Gae
相关产品推荐
相关产品推荐

