我有以下 docker-compose.yml
文件:
version: '2'
services:
web:
image: myspringapp:1
ports:
- "8080:8080"
depends_on:
- myspringapp_postgres
myspringapp_postgres:
image: postgres:9.4
ports:
- "5432:5432"
volumes:
- ./pgdata:/var/lib/postgresql/data
volumes:
pgdata: {}
myspringapp 是我之前构建的一个 docker 镜像。这样做的问题是执行
docker-compose stop
后数据丢失了。 .有谁知道问题是什么?
最佳答案
看起来您正在定义一个卷,但指定了要使用的绑定(bind)挂载。
这里的不同之处在于,在某种意义上,卷实际上是它自己的独立“驱动器”,其中绑定(bind)挂载需要映射到本地系统上的特定文件路径。
如果您在本地查看 ./pgdata
目录,您应该找到所有以前的数据;为了解决您的问题,您需要删除 ./
从那和只是指定名称pgdata
以便它使用定义的音量。当然,这会让你重新开始。
撰写文件.yml
version: '2'
services:
web:
image: myspringapp:1
ports:
- "8080:8080"
depends_on:
- myspringapp_postgres
myspringapp_postgres:
image: postgres:9.4
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata: {}
关于Docker撰写不持久化数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47634042/