gpt4 book ai didi

docker - 将 docker 卷导出到另一台机器

转载 作者:行者123 更新时间:2023-12-05 00:44:06 26 4
gpt4 key购买 nike

我目前正在尝试将 redmine 与 postgres 数据库一起使用,但在设置环境时遇到了一些问题。

假设我有以下撰写文件

  db-redmine:
image: 'bitnami/postgresql:11'
user: root
container_name: 'orchestrator_redmine_pg'
environment:
- POSTGRESQL_USERNAME=${POSTGRES_USER}
- POSTGRESQL_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRESQL_DATABASE=${POSTGRES_DB}
- BITNAMI_DEBUG=true
volumes:
- 'postgresql_data:/bitnami/postgresql'

redmine:
image: 'bitnami/redmine:4'
container_name: 'orchestrator_redmine'
ports:
- '3000:3000'
environment:
- REDMINE_DB_POSTGRES=orchestrator_redmine_pg
- REDMINE_DB_USERNAME=${POSTGRES_USER}
- REDMINE_DB_PASSWORD=${POSTGRES_PASSWORD}
- REDMINE_DB_NAME=${POSTGRES_DB}
- REDMINE_USERNAME=${REDMINE_USERNAME}
- REDMINE_PASSWORD=${REDMINE_PASSWORD}
volumes:
- 'redmine_data:/bitnami'
depends_on:
- db-redmine

volumes:
postgresql_data:
driver: local
redmine_data:
driver: local

这会为 redmine 生成 postgres 数据库并创建 redmine 实例。

容器启动后,我进入 redmine 实例并配置应用程序,这意味着创建自定义字段、添加跟踪器、问题类型等。需要进行大量设置,所以我不想这样做每次我想部署这种容器。

我认为,因为所有设置数据都将进入卷,所以我可以导出这些卷,然后在新机器上导入它们。这样,当两个应用程序在新机器上启动时,它们将拥有之前设置的所有必要信息。

这听起来很简单,但我在导出和导入阶段苦苦挣扎。

按照我所见,我可以通过执行以下操作将 postgresql_data 导出到 .tar 文件:

docker export postgresql_data --output="postgres_data.tar"

但是如何在新机器上导入新生成的 .tar 文件呢?如果我没记错的话,通过将 .tar 文件导入到新机器中名为 postgresql_data 的卷中,模板中的数据将用于生成新容器.

有没有办法做到这一点?这是在两台主机之间复制设置的正确方法吗?

是否正在做类似 docker volume create postgresql_data 然后将文件复制到卷目录的方法?

最佳答案

我的建议是使用 pg_dumppg_restore工具,而不是应对数量。您可以为 postgres 容器添加挂载路径,例如:

db-redmine:
image: 'bitnami/postgresql:11'
user: root
container_name: 'orchestrator_redmine_pg'
environment:
- POSTGRESQL_USERNAME=${POSTGRES_USER}
- POSTGRESQL_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRESQL_DATABASE=${POSTGRES_DB}
- BITNAMI_DEBUG=true
volumes:
- 'postgresql_data:/bitnami/postgresql'
- /dump-files:/dump-files

现在登录容器并运行 pg_dump "Your-db-name">/dump-files/dump现在将此文件复制到任何新创建的容器并在新容器中运行:pg_restore -d "your-db-name"/dump-files/dump

关于docker - 将 docker 卷导出到另一台机器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68229758/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com