一尘不染

如何在构建时创建填充的MySQL Docker映像

mysql

我想用已经填充的数据创建一个MySQL Docker映像。

我想要创建3个这样的图层:

        |---------------------|---------------------|
Layer 3 | Customer 1 Database | Customer 2 Database |
        |---------------------|---------------------|
Layer 2 |   Database image with tables but no data  |
        |-------------------------------------------|
Layer 1 |                mysql:5.6.26               |
        |-------------------------------------------|

我的问题是现在如何为第2层和第3层创建正确的Dockerfile?将我的empty_with_tables.sql文件加载到第2层,并将customer1.sql和customer2.sql加载到第3层的两个映像中。我读了一些有关将SQL文件放入’/docker-
entrypoint-
initdb.d’的内容。但这会导致数据是第一次启动图像时的。这不是我想要的。我希望数据在映像中准备就绪(例如,可以在测试中快速获得)。

我可以启动mysql映像,从命令行加载数据并执行“提交”,但这是不可复制的,当更改SQL文件中的数据时,需要再次执行该操作。

如何才能做到这一点?

最好的祝福,

  • 莫滕·格林·赫曼森

阅读 232

收藏
2020-05-17

共1个答案

一尘不染

因此,我对这个问题的解决方案只是不对所有内容进行分层,而是创建基础映像并使用–volumes-from从仅数据容器中注入数据库文件。

2020-05-17