如何将现有的postgres数据文件夹复制和使用到docker postgres容器中

塞梅诺夫

我想构建用于测试某些问题的postgres docker容器。我有:

  1. postgres文件的存档文件夹(/var/lib/postgres/data/

  2. 将文件夹放入doccker postgres:latest的Dockerfile。

我想要:

  1. Docker映像,在重新创建映像后会重置自身状态。

  2. 具有基于数据库状态的容器传递到容器postgres文件中

  3. 我不想等待长时间的备份操作并使用/docker-entrypoint-initdb.d初始化脚本还原现有数据库

  4. 我不想使用卷,因为我不需要在重新启动之间存储新数据(这就是为什么该文章不同于如何将PostgreSQL容器与现有数据一起使用?

我的建议是在构建阶段将postgres files(/var/lib/postgres/data/)从主机复制到docker的/var/lib/postgres/data/

但是在initdb阶段执行时,postgres docker会替换此文件。

如何要求Postgres docker不覆盖数据库文件?

例如Dockerfile

FROM postgres:latest


COPY ./postgres-data.tar.gz /opt/pg-data/
WORKDIR /opt/pg-data
RUN tar -xzf postgres-data.tar.gz
RUN mv ./data/ /var/lib/postgresql/data/pg-data/

运行命令

docker run -p 5432:5432 -e PGDATA=/var/lib/postgresql/data/pg-data --name database-immage1 database-docker
0

如果您确实不需要使用数据库快照创建自定义映像,则可以使用卷。解压主机上某处的数据库文件,~/pgdata然后运行映像。例:

docker run -v ~/pgdata:/var/lib/postgresql/data/ -p 5432:5432 postgres:9.5

这些文件必须与postgres映像版本兼容,因此使用与存档数据库相同的映像版本。

相反,如果必须重新创建映像,则不需要解压缩数据库存档。ADD说明将为您做到这一点。确保tar不包含任何前导目录。

Dockerfile

FROM postgres:latest
ADD ./postgres-data.tar.gz /var/lib/postgresql/data/

建立它:

docker build . -t database-docker

运行时不覆盖环境变量PGDATA请注意,您将文件复制到,/var/lib/postgresql/dataPGDATA指向/var/lib/postgresql/data/pg-data

运行容器:

docker run -p 5432:5432 --name  database-image1 database-docker

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

postgres在docker容器中不起作用

Docker-如何在postgres容器中运行psql命令?

将文件夹中的所有文件“ docker cp”转移到现有容器文件夹中

如何将Git版本控制(Bitbucket)添加到现有的源代码文件夹中?

如何将opencv_contrib构建到现有的opencv文件夹中?

错误:Docker容器中的Postgres数据库导入

在Docker容器中启动Postgres

如何在Docker Alpine Linux容器中运行Postgres?

如何阻止initdb在Docker Postgres容器中完成运行?

在Docker容器中创建postgres扩展

使用Docker容器连接到Laravel中的Postgres

Docker Postgres容器丢失了应存储在卷中的数据

Docker容器中的Django应用无法找到Postgres

无法连接到Python Shell外部的Docker容器中的postgres

如何在Docker容器中删除Postgres数据库

。如何将文件从项目资产文件夹复制到android studio中的设备数据文件夹?

在postgres容器中创建多用途数据库

如何将本地文件夹合并到现有的git仓库中?

要与Postgres数据库容器共享Django Web容器中的备份文件:如何?

如何将文件正确保存在数据文件夹中

当 Dockerfile 存在于该文件夹中时,如何将任何文件夹复制到 Docker 容器?

无法访问在单独的 docker 容器中运行的 postgres

应该如何将 Bulma 文件夹整合和构建到现有的 web 项目文件夹中?

挣扎于 Docker 容器中 Django 和 Postgres 之间的连接

将 Docker Postgres 容器连接到现有的空数据库

如何将文件夹内容复制到dockerfile中的现有文件夹

docker容器中不存在postgres数据库

让 postgres docker 容器在 azure 管道作业中运行

在 postgres 容器中,导入的扩展在哪里?