如何使用docker-compose up-down-up制作持久存储?

时间:2016-08-28 06:43:46

标签: postgresql docker docker-compose

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

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

当我第二次运行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

1 个答案:

答案 0 :(得分:0)

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