How to make persistent storage with docker

I have a multiple container application, that is using the postgres image in docker-compose.yml file. Postgres container has volume on host machine for persistent storage.

When I run docker-compose up at first time all is fine, postgres creates db files in my host folder. After it I need to shut down application temporarily with docker-compose down if I'll change code of web container.

When I run docker-compose up second time, postgres overwriting all db files, but I need that data not changes. How can I solve this issue?

My 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

I solve this problem. It occurs probably because I changed permissions for pgdb directory with host root user. By default I couldn't open pgdb in host machine because owner is postgres user. I could be wrong but after I stopped to change the resolutions the problem was gone.

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

上一篇: Docker容器到NAS存储

下一篇: 如何使用docker进行持久存储