无法在 docker-compose 中使用命名卷保留 postgresql 数据

瓦西里 123

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

docker volume create employeedata 

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

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上面指定的卷路径之间的关系

我很感激你的帮助

克里斯·贝克

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

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

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

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

volumes:
  employeedata:
    external: true
    name: employeedata

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

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法在 Docker-Compose 文件中使用(mysql 映像中的卷)映射本地数据库

在 docker-compose 中从卷重用 postgresql 数据库

docker-compose下来不保留PostgreSQL数据

docker-compose的RabbitMQ无法还原数据

Docker-compose无法挂载多个命名卷

无法使用默认的PostgreSQL Docker映像创建数据库

Docker Compose 无法从用户“postgres”的数据库 (jdbc:postgresql://db:5432/postgres) 获取连接:连接尝试失败

PostgreSQL docker-compose down 后使用的端口无法再次使用

在docker-compose场景中无法使用npm pg连接到Postgresql容器

docker-compose无法正确绑定卷

Docker compose 无法为 postgresql 和 redis 创建容器

flask无法将PostgreSQL与docker-compose连接

docker compose postgresql 连接 ExtendedSocketException:无法分配请求的地址

使用docker-compose在Postgresql数据库中创建表

使用docker-compose启用Postgresql登录

Docker-Compose - 无法使用命令 --init-file 初始化 MySQL 数据库

使用docker-compose删除命名卷?

Docker + docker compose + postgresql 错误

无法使用Adminer和docker-compose连接到MySQL数据库

无法使用docker-compose与mysql和php 7连接到数据库

无法使用docker compose将phpmyadmin连接到数据库

使用docker-compose时Django无法找到数据库

无法使用 docker-compose 连接到 Postgres 数据库

Dockerfile无法复制&Docker-compose卷无法与容器同步

docker-compose-无法连接到MySQL数据库

Docker Compose无法连接到数据库

无法使用docker-compose启动Celery

无法使用docker-compose运行容器

docker compose 无法构建