Docker postgres容器丢失应存储在卷中的数据

时间:2018-04-23 20:00:32

标签: windows postgresql docker

我正在Windows上运行由以下docker-compose文件生成的postgres数据库。在运行docker-compose up --build之前,我使用docker volume --name postgresdata --driver local创建了一个泊坞窗卷。后者是为了避免将Windows文件夹安装到Postgres中。

但是,当我运行docker-compose down后跟docker-compose up --build时,数据库为空,这是我不希望的。任何想法或建议?

这是我正在使用的docker-compose.yml文件:

version: '3.0'

services:

  db:
    image: postgres:latest
    restart: always
    ports:
      - 5432:5432
    env_file:
      - env_file
    volumes:
      - postgresdata
    networks:
     - db1

  market_data:
    build: .
    environment:
      PYTHONUNBUFFERED: 'true'
    stdin_open: true
    tty: true
    links:
     - db:db
    container_name: market_data_container
    volumes:
     - '.:/market_data'
    depends_on:
     - db
    networks:
     - db1

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080
    networks:
     - db1
    depends_on:
     - db


volumes:
 market_data:
 postgresdata:
  external: true

networks:
 db1:
  driver: bridge

1 个答案:

答案 0 :(得分:1)

Postgres已使用volume来保留数据,但docker-compose down会删除此卷。您正在撰写文件中使用命名卷,但不能正确安装它。

version: '3.0'
services:
  db:
    image: postgres:latest
    restart: always
    ports:
      - 5432:5432
    env_file:
      - env_file
    volumes:
      - postgresdata:/var/lib/postgresql/data
    networks:
     - db1

将postgres数据的默认路径添加到您的卷postgresdata:/var/lib/postgresql/data。这应该解决它。