【问题标题】:build docker image (centos) with volume with data for testing (postgresql)构建带有用于测试的数据卷的 docker 映像(centos)(postgresql)
【发布时间】:2018-12-24 07:06:04
【问题描述】:

我想制作带有持久数据的图像,其他开发人员可以运行这个容器并使用它。 我使用这个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 创建图像?怎么做?

【问题讨论】:

    标签: linux postgresql docker centos


    【解决方案1】:

    由于此图像为 PostgreSQL 数据声明了 VOLUME,因此您无法使用卷中的预填充数据从该图像中生成派生图像,无论是使用 docker build 还是 docker commit。 It won't work(请参阅“更改 Dockerfile 中的卷”注释)。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-07
      • 1970-01-01
      • 2015-07-26
      • 2020-04-06
      • 2014-06-10
      • 1970-01-01
      • 2021-10-30
      • 1970-01-01
      相关资源
      最近更新 更多