加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql – 使用docker卷保留数据库

发布时间:2020-12-13 16:04:31 所属栏目:百科 来源:网络整理
导读:我正在尝试将postgres数据保存在docker容器中,以便在docker-compose down和docker-compose up -d时,您不会丢失前一个会话中的数据.我无法做任何事情 – 拉下容器并再次备份会定期删除数据. 这是我目前的docker-compose.yml: version: '2'services: api: bui
我正在尝试将postgres数据保存在docker容器中,以便在docker-compose down和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

救命?

解决方法

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

volumes:
  - /var/lib/postgresql/data

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

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

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

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

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

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

(B)使用外部容器

docker-compose有external container的选项.
当它设置为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的数据将保存到名为mypostgredb的docker卷中.有关详细信息,请阅读reference.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读