postgresql - Postgresql 作为 docker 容器不从映射卷中的数据开始
问题描述
在我的 macbook 上,我在 docker 容器中运行了 postgresql,并使用映射卷来保存数据。这在本地完美运行。但是,当我尝试在 Ubuntu 服务器上执行相同操作时,映射卷中的“初始”数据不起作用。Postgres 以“空”初始状态启动。但是,当我在默认 postgres 数据库中添加一个表和该表中的数据时,它是持久的。所以体积映射似乎起作用了。此外,有趣的是,当我尝试在新数据库中创建表时出现错误。新数据库也是持久化的,但是由于抛出错误,无法保存表:
无法打开文件“base/16384/2611”:没有这样的文件或目录
这是预期的,因为文件夹 base/16384 不存在。
对我来说,这似乎是一个用户/权限问题,但不知道如何解决这个问题。我尝试以 root 身份运行容器,但没有帮助。
有什么建议么?
我正在使用 docker-compose 或从命令行启动容器;
docker run --rm --name pg -e POSTGRES_PASSWORD=[password] -d -p 5432:5432 -v /root/docker/volumes/postgres:/var/lib/postgresql/data postgres -c listen_addresses='*'
解决方案
根据 docker forums 上的建议,我没有在 docker 容器中使用 pg_dump 和 pg_restore 来移动实际的数据文件夹。这成功了
推荐阅读
- laravel - 函数 LibraryClearanceTableSeeder 的参数太少
- node.js - 如何从 Json Web Token 中获取当前用户的名称?
- r - 如何仅更改 POSIXct 值中的年份值
- macos - iCloud 文件夹对 MacOS 10.15 Catalina 中的应用程序仅部分可见
- neo4j - 如何查找节点的所有路径
- recursion - 计算机程序结构和解释中的斐波那契树递归
- javascript - 在 D3 V3.5 中将日期格式应用于解析的日期
- php - PHP 服务器端事件有效,但第一次触发需要 10-15 秒
- javascript - 多系列折线图
- php - Guzzle 没有同时发送请求