当前位置:  开发笔记 > 数据库 > 正文

使用docker卷保留数据库

如何解决《使用docker卷保留数据库》经验,为你挑选了1个好方法。

我正在尝试将postgres数据保存在docker容器中,这样一旦docker-compose down and docker-compose up -d你不丢失上一个会话中的数据.我无法做任何事情 - 拉下容器并再次备份会定期删除数据.

这是我目前的docker-compose.yml:

version: '2'
services:
  api:
    build: .
    ports:
      - '8245:8245'
    volumes:
      - .:/home/app/api
      - /home/app/api/node_modules
      - /home/app/api/public/src/bower_components
    links:
      - db
  db:
    build: ./database
    env_file: .env
    ports:
      - '8246:5432'
    volumes_from:
      - dbdata

  dbdata:
    image: "postgres:9.5.2"
    volumes:
      - /var/lib/postgresql/data

救命?



1> ymonad..:

根据Docker of Docker Compose,你写的东西如下:

volumes:
  - /var/lib/postgresql/data

它创建一个新的docker卷并将其映射到/var/lib/postgresql/data容器内部.因此,每次运行docker-compose updocker-compose down,它创建新卷.您可以使用确认行为docker volume ls.

为避免这种情况,您有两种选择:

(A)将主机目录映射到容器中

您可以使用将主机目录映射到容器中:.

volumes:
  - /path/to/your/host/directory:/var/lib/postgresql/data

postgresql的数据将保存到/path/to/your/host/directory容器主机中.

(B)使用外部容器

docker-compose有一个外部容器选项.当它设置为true时,它不会始终创建音量.这是一个例子.

version: '2'
services:
  dbdata:
    image: postgres:9.5.2
    volumes:
      - mypostgresdb:/var/lib/postgresql/data
volumes:
  mypostgresdb:
    external: true

使用external: true,docker-compose不会创建mypostgredb卷,因此您必须使用以下命令自己创建它:

docker volume create --name=mypostgredb

postgresql的数据将保存到名为docker的卷中mypostgredb.阅读参考了解更多细节.

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有