docker-compose down 丢失数据

2022-07-07 17:01:41 +08:00
 ccccccccw
我首先将 postgresql 的配置文件 pg_hba.conf 中的“host all all all scram-sha-256”为“host all all all md5”,修改完这个配置文件后,我执行了 docker-compose down(但是并没有执行 down -v),然后执行了 docker-compose up -d 重新启动应用,但是发现数据库的数据全部丢失了,并且执行 docker volume ls ,发现是空的,一下是我的 docker-compose 配置,麻烦大佬们帮我看看是什么地方出了问题
https://i.stack.imgur.com/AxvRK.png
1701 次点击
所在节点    Docker
9 条回复
ccccccccw
2022-07-07 17:02:52 +08:00
丢失的是测试服务器的数据,数据应该是恢复不了了,但是想弄懂到底是因为什么原因造成的,后续又重新找了一个服务器做测试,相同的步骤,发现数据并没有丢失
novolunt
2022-07-07 17:32:09 +08:00
version: '2'
services:
postgresql:
image: docker.io/bitnami/postgresql:11
volumes:
- 'postgresql_data:/bitnami/postgresql'
volumes:
postgresql_data:
driver: local
ccccccccw
2022-07-08 09:37:35 +08:00
有大佬可以帮忙分析一下吗,还是没想明白原因
defunct9
2022-07-25 13:58:34 +08:00
开 ssh ,让我上去看看
rushssss
2022-08-05 14:15:13 +08:00
因为 postgresql 的数据实际存储在 /var/lib/postgresql/data 下,它直接在 Dockerfile 中声明了一个 VOLUME 是在 /var/lib/postgresql/data

而你挂载的是 /var/lib/postgresql ,由于 UnionFS 的特性,挂载 /var/lib/postgresql 并不影响下边再挂一个 /var/lib/postgresql/data


最后你的数据实际上没有丢,在宿主机上的 /var/lib/docker/volumes 下找找有惊喜
ccccccccw
2022-08-05 15:32:40 +08:00
@rushssss 当时执行过 docker volume ls ,发现是空的
ccccccccw
2022-08-05 15:33:30 +08:00
@rushssss 我挂载的也是 /var/lib/postgresql/data 呀,可以看图
rushssss
2022-08-05 16:17:58 +08:00
哦,我看的是 2 楼的例子


不过我试了一下,以下这个例子是 OK 的,在 ./postgresql/data 出现了数据,无法复现你的问题

```yaml
version: '3'

services:
db:
image: postgres:12-alpine
restart: on-failure
environment:
POSTGRES_USER: demo
POSTGRES_DB: demo
POSTGRES_PASSWORD: demo
volumes:
- ./postgresql/data:/var/lib/postgresql/data
```
ccccccccw
2022-08-07 14:31:09 +08:00
@rushssss 我使用了这么久了,也就这一次丢了数据,所以感觉很奇怪,来讨论一下的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/864723

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX