如何使用docker进行持久存储

我有一个多容器应用程序,即在docker-compose.yml文件中使用postgres图像。 Postgres容器在主机上具有永久存储容量。

当我第一次运行docker-compose时一切正常,postgres在我的主机文件夹中创建db文件。 之后,我需要使用docker临时关闭应用程序 - 如果我要更改Web容器的代码,请将其关闭。

当我第二次运行docker-compose时,postgres覆盖了所有的db文件,但我需要的数据没有改变。 我该如何解决这个问题?

我的docker-compose.yml

version: '2'

services:
    web:
      build: ./web
      command: python3 main.py
      volumes:
        - ./web:/app
      ports:
        - "80:80"  
      depends_on:
        - db
        - redis
      links:
        - db:db
        - redis:redis

    db:
      image: postgres
      ports:
        - "5432:5432"     
      environment:
        - POSTGRES_PASSWORD:0000
      volumes:
        - ./pgdb:/var/lib/postgresql/data

    redis:
      image: redis
      ports:
        - "6379:6379" 
      command: redis-server --appendonly yes  
      volumes:
        - ./redisdb:/data

我解决了这个问题。 这可能是因为我使用主机root用户更改了pgdb目录的权限。 默认情况下,我无法在主机中打开pgdb,因为所有者是postgres用户。 我可能是错的,但在我停下来改变决议后,问题就没有了。

链接地址: http://www.djcxy.com/p/18247.html

上一篇: How to make persistent storage with docker

下一篇: How to mount host volumes into docker containers in Dockerfile during build