【问题标题】:unable to persist postgresql data using named volume in docker-compose无法使用 docker-compose 中的命名卷持久化 postgresql 数据
【发布时间】:2021-08-12 10:41:24
【问题描述】:

我正在使用 docker-compose 启动带有 postgres 数据库的 spring api。我是docker 的新手,我正在尝试使用我创建的命名卷来持久化我的数据库

docker volume create employeedata 

我将此卷添加到我的 docker-compose.yml 中,但如果我停止或删除我的容器,数据库不会持续存在。

version: '3.8'
services:
  app:
    container_name: springboot-postgresql
    image: springboot-postgresql
    build: ./
    ports:
      - "8080:8080"
    depends_on:
      - postgresqldb
  postgresqldb:
    image: postgres
    ports:
      - "5432:5432"
    volumes:
      - employeedata:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_DB=employeedb
volumes:
  employeedata:
   

我尝试做docker inspect employeedata 并得到以下结果

docker-compose 版本是 2 而不是 3 对我来说似乎很可疑,而且我不明白挂载点与我在上面的 docker-compose.yml 中指定的卷路径有何关系

感谢您的帮助

【问题讨论】:

    标签: postgresql docker docker-compose docker-volume


    【解决方案1】:

    docker compose 在项目命名空间中创建了所有对象。此命名空间通常是 docker-compose.yml 文件的文件夹名称,但您可以通过将 --project-name 传递给(所有)您对 docker compose 的调用来设置它。

    由于 docker 没有一流的命名空间,项目名称只是用作 compose 文件中定义的所有对象的前缀,因此在这种情况下,假设您的项目位于名为“project”的文件夹中,那么 compose 将具有创建project_app 作为容器,project_employeedata 作为卷。

    要覆盖它,您可以指定一个显式 container-name,就像您所做的那样。但是您真的不应该这样做,因为这意味着任何两个使用此名称的 compose 文件部署现在都会发生冲突。

    并为卷覆盖它 - 告诉 docker compose 该卷是外部创建的并提供外部名称。否则,compose 将尝试使用命名空间的名称。

    volumes:
      employeedata:
        external: true
        name: employeedata
    

    同样,让 compose 管理卷名可能是更好的选择。只需确保托管 compose 文件的目录具有合适的唯一名称 - 或确保通过 --project-name 传递合适的唯一名称,然后使用 whatever_employeedata 管理卷。

    注意。除非将 -v / --volumes 传递给 docker compose down,否则 Docker compose 不会删除 compose 托管卷,因此您的数据将保留在此处。

    /var/lib/docker/volumes 只是 docker 将管理卷的(默认)位置。

    2.0 指的是 compose 的版本,而不是你的 compose.yml 文件中的版本。

    【讨论】:

    • 我尝试使用匿名卷,但在我执行 docker-compose stop 然后 docker-compose up 后数据仍然没有保留
    猜你喜欢
    • 2020-04-06
    • 1970-01-01
    • 2022-01-18
    • 2021-12-28
    • 1970-01-01
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    相关资源
    最近更新 更多