首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库在Docker容器停止时丢失。怎么恢复?

数据库在Docker容器停止时丢失。怎么恢复?
EN

Server Fault用户
提问于 2020-04-04 16:59:55
回答 1查看 2.9K关注 0票数 1

我有来自这个项目的以下撰写文件:

代码语言:javascript
复制
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,但这也行不通。

问题是:这个服务器已经在使用数据了。如何解决持久化问题,同时仍保留当前数据?

一些进展。一个简单的更改使得数据在容器停止后仍然存在,我只是不知道为什么。我换了这个:

代码语言:javascript
复制
PGDATA=pgdata

在这方面:

代码语言:javascript
复制
PGDATA=/var/lib/postgresql/data/pgdata

在我的env文件中。但为什么这样做呢?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2020-04-04 17:10:53

停靠卷驱动程序不会在服务重新启动之间持久化数据。您可以使用本地持久化驱动器;这个用例我已经用过好几次了。

当数据已经在某处时,可以在启动服务之前创建卷,并将数据复制到指定的目录中。Postgres应该从那里拿起数据库。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1010916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档