Docker撰写不持久化数据

标签 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 后数据丢失了。 .有谁知道问题是什么?

最佳答案

看起来您正在定义一个卷,但指定了要使用的绑定(bind)挂载。

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

如果您在本地查看 ./pgdata目录,您应该找到所有以前的数据;为了解决您的问题,您需要删除 ./从那和只是指定名称pgdata以便它使用定义的音量。当然,这会让你重新开始。

撰写文件.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: {} 

关于Docker撰写不持久化数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47634042/

相关文章:

docker - Docker “docker-entrypoint-initdb.d”脚本未执行

docker - 在不提供外部构建参数的情况下,在 Dockerfile 中破坏缓存

docker - 如何在Jenkins(Pipeline)中为我的dockercontainer指定开始脚本?

docker - 无法连接到 Docker 守护进程 http+docker ://localhost with docker-compose

mysql - Docker MySQL无法连接到套接字

docker - 尝试启动网络时出错

docker - 重命名 docker-compose 项目而不删除卷

Docker:构建镜像时出现 "lstat no such file or directory"错误。文件在那里

docker - Memsql docker镜像:无法在127.0.0.1:9000到达本地代理?

docker - 从docker-compose将shell命令结果传递给Dockerfile