为什么 docker-compose down 会删除我的卷?如何避免“向下”执行此操作。(Postgresql)

Sur*_*ren 8 postgresql docker dockerfile docker-compose

-v当我在没有 或 的情况下运行 docker-compose down 时--volumes,为什么我的数据丢失了?Docker 会删除我的卷吗?
当我检查时docker volume inspect pgdata,它始终显示当前时间戳,看起来每次都总是重新创建。

但是当我刚刚停止 postgres 容器并docker stop <container_id>重新运行容器时,数据仍然存在。这是我的 docker-compose

version: '3.7'
services:
  app:
    container_name: bsf-quiz-app
    image: sapkotasuren/bsf-quiz
    ports:
      - "443:8443"
    depends_on:
      - postgresqldb
  postgresqldb:
    image: postgres:latest
    ports:
      - "5432:5432"
    volumes:
      - pgdata:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=password
      - POSTGRES_USER=postgres
      - POSTGRES_DB=bsfQuiz
      
volumes:
  pgdata:
Run Code Online (Sandbox Code Playgroud)

更新于 2021 年 1 月 20 日

我尝试以绑定安装方式执行此操作,我看到创建了很多数据,但仍然存在相同的问题,在 docker-compose down 和 up 之后找不到我之前在数据库上创建的记录。

我还尝试使用 docker command: 创建命名卷 docker create volume postgres,并在我的 yaml 文件中提及它并设置externaltrue. 还是同样的问题!

我的 yaml 文件:

version: '3.9'
services:
  app:
    container_name: bsf-quiz-app
    image: sapkotasuren/bsf-quiz
    ports:
      - "443:8443"
    depends_on:
      - postgresqldb
  postgresqldb:
    container_name: postgres
    image: postgres:latest
    volumes:
      - postgres:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_PASSWORD=password
      - POSTGRES_USER=postgres
      - POSTGRES_DB=bsfQuiz

volumes:
  postgres:
    external: true
Run Code Online (Sandbox Code Playgroud)

sta*_*wed 10

根据文档,除非使用该选项,否则docker compose down不会删除任何卷。-v


fil*_*p_j 5

我遇到了同样的行为docker compose down- 我的 postgres 容器被删除,包括所有数据。对我来说,解决方案是使用这个:

docker-compose stop
Run Code Online (Sandbox Code Playgroud)