构建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创建图像?怎么做?

由于此映像为PostgreSQL数据声明了VOLUME,因此无法使用docker builddocker commit在卷中使用预填充的数据从中生成派生映像。它不起作用(请参阅注释"更改Dockerfile中的卷"(。

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