Docker构成不持久化数据

时间:2017-12-04 13:01:33

标签: docker docker-compose dockerfile

我有以下docker-compose.yml文件:

version: '2'
services:
  web:
    image: myspringapp:1
    ports:
      - "8080:8080"
    depends_on:
      - myspringapp_postgres
  myspringapp_postgres:
    image: postgres:9.4 
    ports:
      - "5432:5432"
    volumes:
      - ./pgdata:/var/lib/postgresql/data
volumes:
  pgdata: {} 

myspringapp是我之前构建的docker镜像。这样做的问题是在执行docker-compose stop后数据丢失了。有谁知道问题是什么?

1 个答案:

答案 0 :(得分:0)

看起来您正在定义卷,但指定要使用的绑定装载。

这里的不同之处在于卷实际上是它自己的孤立“驱动器”,在某种意义上,绑定挂载需要映射到本地系统上的特定文件路径。

如果您在当地./pgdata目录中办理登机手续,则应找到以前的所有数据;要修复您的问题,您需要从中移除./只需指定名称pgdata,以便它使用定义的卷。当然,这会让你重新焕发活力。

<强>撰写-file.yml

version: '2'
services:
  web:
    image: myspringapp:1
    ports:
      - "8080:8080"
    depends_on:
      - myspringapp_postgres

  myspringapp_postgres:
    image: postgres:9.4 
    ports:
      - "5432:5432"
    volumes:
      - pgdata:/var/lib/postgresql/data
volumes:
  pgdata: {}