我有来自这个项目的以下撰写文件:
version: "3"
volumes:
static-files:
driver: local
postgres:
driver: local
services:
db:
image: postgres:11.1
volumes:
- postgres:/var/lib/postgresql/data/pgdata
env_file:
- ./config/environment/development.env
expose:
- "5432"
webapp:
build:
context: webapp
volumes:
- ./webapp/covidoff:/srv/covidoff
- static-files:/srv/static-files
ports:
- "8000:8000"
- "80:8000"
depends_on:
- db
env_file:
- ./config/environment/development.env如您所见,有两个服务正在启动:一个PostgreSQL数据库db和一个Django webapp。到目前为止,一切都很正常,除了一件事:每次我停止db容器时,数据都会丢失。
有人让我尝试postgres:/var/lib/postgresql/data而不是postgres:/var/lib/postgresql/data/pgdata,但这也行不通。
问题是:这个服务器已经在使用数据了。如何解决持久化问题,同时仍保留当前数据?
一些进展。一个简单的更改使得数据在容器停止后仍然存在,我只是不知道为什么。我换了这个:
PGDATA=pgdata在这方面:
PGDATA=/var/lib/postgresql/data/pgdata在我的env文件中。但为什么这样做呢?
发布于 2020-04-04 17:10:53
停靠卷驱动程序不会在服务重新启动之间持久化数据。您可以使用本地持久化驱动器;这个用例我已经用过好几次了。
当数据已经在某处时,可以在启动服务之前创建卷,并将数据复制到指定的目录中。Postgres应该从那里拿起数据库。
https://serverfault.com/questions/1010916
复制相似问题