首页 > 解决方案 > 构建带有用于测试数据的卷的docker镜像(centos)(postgresql)

问题描述

我想为其他开发人员制作带有持久数据的图像,可以运行这个容器并使用它。我使用这个https://hub.docker.com/r/centos/postgresql-96-centos7/并执行下一步:1)使用命令运行它

docker run -d -e POSTGRESQL_USER=svcg -e POSTGRESQL_PASSWORD=svcg1 -e POSTGRESQL_DATABASE=bcs -p 5432:5432 --expose=5432 --name=postgres --net=docker-net -v psql:/var/lib/pgsql/data centos/postgresql-96-centos7 

结果是一个正在运行的容器“postgres”和卷“psql”。

2) 从 dumpName.xml 中恢复数据

java -jar database_backup_starter.jar -u svcg -p svcg1 -url jdbc:postgresql://192.168.99.100:5432/bcs -m restore -path database_dump

卷“psql”包含测试数据。

是否可以一步完成?例如,从卷或从带有数据卷的 docker 创建图像?怎么做?

标签: linuxpostgresqldockercentos

解决方案


由于此映像为 PostgreSQL 数据声明了 a VOLUME,因此您无法使用卷中的预填充数据从中生成派生映像,无论是使用docker build还是docker commit它不起作用(请参阅注释“更改 Dockerfile 中的卷”)。

将数据加载到新创建的数据库容器中的标准方法似乎是在第一次启动容器时将 SQL 语法数据库转储放在初始化目录中。在此图像中,您似乎必须将数据库转储包装在 shell 脚本中并将其放入/opt/app-root/src/postgresql-init/目录中。对于股票 postgres 图像,您需要将 *.sql 文件放入/docker-entrypoint-initdb.d/.


推荐阅读