我在docker环境中创建了一个rails应用程序,它链接到一个postgres实例.我编辑了

难道不可能在提交中保存数据,然后在提交后重新使用吗?

我用了postgres的图片:https://registry.hub.docker.com/_/postgres/

推荐答案

问题是postgres Dockerfile将"/var/lib/postgresql/data"声明为卷.这只是一个普通目录,位于图像使用的Union文件系统之外.卷一直存在,直到没有容器链接到它们,并且它们被显式删除.

你有几个 Select :

  • 使用--volumes-from命令与新容器共享数据.这只在一次只有一个正在运行的postgres映像时才起作用,但这是最好的解决方案.
  • 编写自己的Dockerfile,在声明卷之前创建数据.创建容器时,这些数据将被复制到卷中.
  • 编写一个入口点或cmd脚本,在运行时填充数据库.

所有这些建议都要求您在容器运行后使用卷来管理数据.或者,您可以编写自己的Dockerfile,而不必声明卷.然后,在添加数据后,可以使用docker commit创建新图像.这可能会在短期内奏效,但绝对不是您应该如何使用容器——它是不可重复的,最终会耗尽Union文件系统中的层.

更多信息,请查看managing data in containers上的Docker官方文档.

Postgresql相关问答推荐

在输入稍有错误的PostgreSQL表中进行快速字符串搜索

mosquito-go-auth with postgres authorization error

是否从表中 Select 值?巴什

如何在Postgres中对分区表使用Hibernate验证?

如何获得一起满足数量要求的物品? (WHILE 循环还是 CTE?)postgresql

Postgres:一次插入多行时自定义upsert(存储过程?)?

Postgres 将分区附加到表的时间太长.想明白为什么

气流数据库如何定期管理?

Spring:如何在 PostgreSQL 中使用 KeyHolder

如何让 Flask SQLAlchemy 重用数据库连接?

包含受先前 DELETE 影响的行数的变量?

在 PostgreSQL 中将时间转换为秒

LAG 函数和 GROUP BY

为 Django Postgres 连接强制 SSL

Postgres - 如果找不到记录,则在更新时返回错误

如何创建 postgres 数据库模式的 sql 脚本?

使用 RPostgreSQL 写入特定模式

Array Push的 Postgres 数组追加和数组长度

postgres LISTEN/NOTIFY rails

postgresql 删除级联